Click URL events

Overview

Get paginated individual click events for one tracked click URL (across both email and SMS requests), with per-event metadata and the associated customer/recipient data.

Prerequisites

  • A bearer token. Callable with Account tokens.

Base URL

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

Endpoint

GET /api/v1/campaign/click-url/{click_url_id}/events

Authentication

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

  • Who can call it: Account tokens.

  • The endpoint scopes the click URL via its parent campaign, so only click URLs belonging to the caller's own company are reachable.

  • Otherwise 404 Click URL not found (the example id 9999 is a not-found probe).

Rate limit

  • No rate limit.

Query parameters

  • Path: click_url_id (integer, required) — click-URL id (route-constrained to [0-9]+).
  • Query: start_date (string Y-m-d, optional) — event window start; defaults to the click URL's 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.
  • Query: page (integer, optional, min 1) — page number.
  • Query: limit (integer, optional, 10–100) — page size; defaults to 20 (values below 10 are raised to 10, capped at 100).

Response

  • data.current_page (int), per_page (int), total (int), last_page (int).
  • data.click_url (object) — { id, name, placeholder, url, channel_type }.
  • data.events (array) — each event: id (int), event (string, always click), ip (string), user_agent (string), referer (string), metadata (object, nullable), created_at (ISO-8601). When the event links an email request, customer_data = { id, email, status, sent_at (ISO/nullable), customer_name, requestor_name }. When it links an SMS request, customer_data = { id, phone_number, status, sent_at, customer_name, requestor_name }; customer_data is absent when neither relation is present.

200 Success · 200

{
  "data": {
    "status": "success",
    "data": {
      "current_page": 1,
      "per_page": 20,
      "total": 150,
      "last_page": 8,
      "click_url": {
        "id": 45,
        "name": "Direct to Manager",
        "placeholder": "directTo_manager",
        "url": "https://example.com/manager",
        "channel_type": "email"
      },
      "events": [
        {
          "id": 123,
          "event": "click",
          "ip": "192.168.1.1",
          "user_agent": "Mozilla/5.0...",
          "referer": "https://gmail.com",
          "metadata": null,
          "created_at": "2026-06-15T10:30:00.000000Z",
          "customer_data": {
            "id": 88,
            "email": "[email protected]",
            "status": "clicked",
            "sent_at": "2026-06-15T09:00:00.000000Z",
            "customer_name": "Jane Doe",
            "requestor_name": "Front Desk"
          }
        }
      ]
    }
  }
}

Errors

StatusMeaning
401The bearer token is missing, expired or invalid
404No click URL matches the id (Click URL not found)
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/click-url/<click_url_id>/events" \
  --header 'Authorization: Bearer <bearer-token>' \
  --header 'Accept: application/json'

Did this page help you?