Email click URLs

Overview

Get per-URL click statistics for the email channel of a campaign. Which tracked click URLs were clicked, how many times, by how many distinct IPs, and when last clicked.

Prerequisites

  • A bearer token. Callable with Account tokens.
  • The campaignId of the record you are targeting.

Base URL

EnvironmentURL
Productionhttps://production-api.shoutaboutus.com
Developmenthttps://development-api.shoutaboutus.com

Endpoint

GET /api/v1/campaign/{campaignId}/report/email/click-urls

Authentication

  • Requires a bearer token in the Authorization: Bearer <bearer-token> header.

  • Who can call it: Account tokens.

  • A non-matching id returns 404 Campaign not found.

Rate limit

  • No rate limit.

Path parameters

ParameterTypeRequiredDescription
campaignIdintegerRequiredDigits only.

Query parameters

  • Query: start_date (string Y-m-d, optional) — click-event window start; defaults to campaign created_at start-of-day.
  • Query: end_date (string Y-m-d, optional) — window end; defaults to now end-of-day. Swapped if start > end.

Response

  • data.data[].id (int) — click-URL id.
  • data.data[].url_name (string) — display name; Maps.Google is remapped to Google, and (Follow-up) is appended when the URL is a follow-up link.
  • data.data[].is_follow_up (bool).
  • data.data[].placeholder (string) — template placeholder token.
  • data.data[].destination_url (string) — target URL; when empty but a landing_page_id exists it is built from the white-label URL as {white_url}/lp/{landing_page_id}?store_id={store_id}&preview=true.
  • data.data[].click_count (int) — total click events in the window.
  • data.data[].unique_ips (int) — distinct IPs.
  • data.data[].last_clicked (ISO-8601 datetime, nullable) — max event time, or null if never clicked.

200 Success · 200

{
  "data": {
    "status": "success",
    "data": [
      {
        "id": 45,
        "url_name": "Google",
        "is_follow_up": false,
        "placeholder": "directTo_google",
        "destination_url": "https://maps.google.com/...",
        "click_count": 25,
        "unique_ips": 20,
        "last_clicked": "2026-06-15T10:30:00.000000Z"
      }
    ]
  }
}

Errors

StatusMeaning
401The bearer token is missing, expired or invalid
404No record matches the id you sent
422The request failed validation — the response names the fields
500Unexpected server error

Example request

curl --request GET \
  --url "https://production-api.shoutaboutus.com/api/v1/campaign/123/report/email/click-urls" \
  --header 'Authorization: Bearer <bearer-token>' \
  --header 'Accept: application/json'

Did this page help you?