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
clickHashIdof the record you are targeting.
Base URL
| Environment | URL |
|---|---|
| Production | https://production-api.shoutaboutus.com |
| Development | https://development-api.shoutaboutus.com |
Endpoint
GET /api/v1/campaign/click-url/{clickHashId}
Authentication
-
No bearer token required.
-
Public — no bearer token (unauthenticated
campaigngroup; item markednoauth). Hit directly when a customer clicks a tracked link.
Rate limit
- 30 requests/min per IP (public).
Path parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
clickHashId | string | Required | Identifier 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
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
400{
"status": "error",
"message": "Bad Request",
"errors": "Invalid request"
}Errors
| Status | Meaning |
|---|---|
400 | Invalid request |
500 | Unexpected server error |
Example request
curl --request GET \
--url "https://production-api.shoutaboutus.com/api/v1/campaign/click-url/123" \
--header 'Accept: application/json'Updated 9 days ago
Did this page help you?
