Resolve click URL & record click

Overview

Decode the Hashids hash_id into [click_url_id, request_id] and record a click event (IP / User-Agent / referer, deduped per IP for 5 minutes). The underlying Email/SMS request is marked as clicked (and delivered, for SMS). The response returns the personalized landing-page HTML, the raw landing-page URL, and the request's unique_code.

Prerequisites

  • No authentication — this endpoint is public.
  • The clickHashId of the record you are targeting.

Base URL

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

Endpoint

GET /api/v1/campaign/click-url/{clickHashId}

Authentication

  • No bearer token required.

  • Public — no bearer token (unauthenticated campaign group; item marked noauth). Hit directly when a customer clicks a tracked link.

Rate limit

  • 30 requests/min per IP (public).

Path parameters

ParameterTypeRequiredDescription
clickHashIdstringRequiredIdentifier for the record you are targeting.

How it works

  • 200 { status: "success", data: { landing_page_html, landing_page_url, request_unique_code } }.
  • 400 (badRequestResponse) "Invalid request" (undecodable hash), "Click URL not found", "Campaign not found" (request id missing), or "Landing page not found".

Response

200 OK · 200

{
  "data": {
    "status": "success",
    "data": {
      "landing_page_html": "<html><body><h1>How was your experience?</h1></body></html>",
      "landing_page_url": "https://search.google.com/local/writereview?placeid=XXXX",
      "request_unique_code": "abc123def456"
    }
  }
}

400 Invalid request · 400

{
  "status": "error",
  "message": "Bad Request",
  "errors": "Invalid request"
}

Errors

StatusMeaning
400Invalid request
500Unexpected server error

Example request

curl --request GET \
  --url "https://production-api.shoutaboutus.com/api/v1/campaign/click-url/123" \
  --header 'Accept: application/json'

Did this page help you?