Skip to main content
AnalyticsBy SendURL teamUpdated 5 min read

Use Click Country and Device Data to Target Campaigns

What a click's country and device can tell you, where they mislead, and how to turn them into targeting, timing and landing-page decisions.

Each click on a short link tells you roughly where the visitor was (their country) and what they used (device type, operating system, browser). Grouped per placement, that's enough to adjust ad targeting, posting times, language and page format. It won't tell you who the person is, and it can't send different visitors to different pages.

What the data can tell you

SendURL records these for every click:

FieldComes fromExample
CountryCloudflare's lookup of the visitor's IP addressDE (Germany)
Device type, vendor, modelthe user agentmobile, Apple, iPhone
Operating system and versionthe user agentiOS 18.6
Browser and versionthe user agentMobile Safari 18.6
Timethe redirect2026-10-14 08:03 UTC

The full record, including referrer and IP address, is in what SendURL records for every click.

Where it misleads

  • Country is the IP's country, not the person's. VPNs, corporate networks that route traffic through one office, and some mobile carriers place visitors elsewhere.
  • Tor hides it. Cloudflare marks Tor traffic as T1 (Cloudflare docs); the console shows it as "Tor".
  • Some clicks have no country. When Cloudflare has no country for an IP it sends XX, and SendURL leaves the field empty.
  • No city, no region. SendURL doesn't record either.
  • Previews look like visitors. A link preview fetched by a chat app's server carries that server's country and a bot's user agent. Check before you read too much into a cluster of clicks from one data-centre country.
  • User agents are trimmed. Browsers report less detail than they used to, so OS and browser versions are approximate.

How to act on it

What you seeWhat you can change
A country you don't target sends a real share of clicks from one placementAdd it to the ad platform's location targeting, or test a post timed for its daytime
Clicks from one placement are mostly mobileCheck the landing page on a phone first; shorten forms; make the main button reachable with a thumb
A placement is mostly desktopLonger pages, comparison tables and downloads are less of a burden
Clicks cluster in one country outside your main languageConsider a translated landing page, or at least a currency or shipping note
Clicks arrive at a different hour than you postMove the post; find your best time to post from click data

The change happens in the ad platform, the scheduler or the page. SendURL doesn't route visitors by country or device: every click on a link goes to the same destination.

A worked example: two placements, by country and device

Pull the clicks for two links and cross-tabulate. This uses the REST API, which pages through clicks 10 at a time (install the two libraries first with pip install pandas requests):

clicks_by_country_device.pyPython
import os
import time

import pandas as pd
import requests

API = "https://api.sendurl.to/api/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['SENDURL_API_KEY']}"}

def clicks(link_id):
    params = {"limit": 10}
    while True:
        res = requests.get(f"{API}/links/{link_id}/clicks", headers=HEADERS, params=params, timeout=10)
        res.raise_for_status()
        page = res.json()
        yield from page["clicks"]
        if not page["pagination"]["hasMore"]:
            break
        params["cursor"] = page["pagination"]["nextCursor"]
        time.sleep(0.25)  # stay well under the API's rate limit

placements = {"ig-bio": "LINK_ID_1", "newsletter": "LINK_ID_2"}
rows = [
    {"placement": name, "country": c["country"], "device": c["device"]}
    for name, link_id in placements.items()
    for c in clicks(link_id)
]
df = pd.DataFrame(rows).fillna("unknown")
print(pd.crosstab([df["placement"], df["country"]], df["device"]))

Replace LINK_ID_1 and LINK_ID_2 with the id of each link (from GET /links). The output looks like this (illustrative numbers):

OutputText
device                desktop  mobile  tablet
placement  country
ig-bio     BR               2      41       1
           US               6      88       3
newsletter DE              37       9       0
           US              64      22       2

Read it as: the Instagram bio link is a phone audience, so its landing page should be built for phones first; the newsletter skews to desktop, with a German group large enough to check send time for. For more on pulling and storing click data, see the URL shortener API in Python guide.

Checklist

  • One short link per placement, so country and device are per placement
  • Look at clicks per placement, not across your whole account
  • Discount preview and scanner clicks before drawing conclusions
  • Treat country as approximate; don't act on a handful of clicks
  • Make the change where it happens (ad targeting, schedule, page), then compare the next campaign

The setup for per-placement links is in how to track link clicks.

Start tracking links free.

Create your first short link with click analytics in seconds. No credit card, no sign-up to start.

Shorten a link