Track affiliate sales live using the Reporting API
This guide shows how affiliate partners can track sales on Tiqets.com in near real time by:
Adding tracking parameters to their outbound Tiqets links.
Retrieving attributed orders via the Reporting API endpoint .
It’s designed to be friendly and practical so you don’t need to be deeply technical to implement the basics.
What you’ll achieve
By the end of this guide you will be able to:
Attribute completed orders back to the click that generated them.
Segment performance by campaign or placement.
Feed conversions into your own reporting or ad platforms (for example, by matching on GCLID).
How it works (high level)
A customer clicks from your site/app to Tiqets.
You add a unique click identifier to the Tiqets URL:
tq_click_id.Optionally, you add a campaign label:
tq_campaign.When an order is completed, you call the real time Reporting API and read your values back in the response:
tq_click_id➜ returned asclick_idtq_campaign➜ returned ascampaign_name
Step 1 — Add tracking parameters to your Tiqets links
When sending a customer to Tiqets.com, append these query parameters to your Tiqets URL.
tq_click_id: A unique reference for each click
tq_click_id: A unique reference for each clickRules of thumb
Use any unique identifier you can generate and store on your side.
Keep it stable so you can match it later.
Do not include PII (no email addresses, phone numbers, names, etc.).
Examples of good values
An ad platform click ID (for example, a Google Ads GCLID) if you plan to reconcile conversions back to that campaign.
A UUID generated by your system.
tq_campaign: Campaign context for better reporting
tq_campaign: Campaign context for better reportingCommon examples include:
tq_campaign=top_banner_promotiontq_campaign=homepage_card_3tq_campaign=blog_article_cta
This is especially useful if you want to optimise performance by placement, content, or creative.
Example outbound link
Implementation tips
Make sure values are URL-encoded.
Store
tq_click_id(and optionallytq_campaign) alongside the click timestamp in your own system.
Step 2 — Retrieve attributed orders via the Reporting API
Once orders are completed, you can retrieve them from the Reporting API.
Endpoint
GET /v2/reports/orders
Important to use the reports endpoint and not /v2/orders/ as this endpoint is dedicated for partners using our Booking API.
Useful query parameters
For live tracking, you’ll typically query a recent date range and paginate through results.
start_date: start day for orders that were finalisedend_date: last day for orders that were finalised (defaults to tomorrow)page_size: number of results per page (default 10, max 100)page: page number
Example request (cURL)
What to look for in the response
In each order record, you’ll find the key attribution fields:
click_id, this matches what you sent astq_click_idcampaign_name, this matches what you sent astq_campaignorder_reference_id, a stable identifier you can use for deduplicationorder_fulfilled_at, when the order was finalised
Here’s a trimmed example:
Always plan to handle pagination — if total is greater than your page_size, fetch the next pages until you’ve processed all results.
Step 3 — Match conversions back to your campaigns
A common workflow looks like this:
When the user clicks out, store
tq_click_id(and optionallytq_campaign) with your own click record.Poll the orders endpoint regularly for recently finalised orders.
For each order, match
click_idback to your stored click record.Use
campaign_namefor breakdowns by placement/campaign.Use
order_reference_idto avoid double-counting.
If you pass GCLID in tq_click_id, you can also use that value to feed the conversion back into Google Ads (or your preferred platform), depending on your own measurement setup.
Recommended polling approach
To keep things simple and robust:
Query a rolling window (for example, yesterday → tomorrow).
Keep a local record of processed
order_reference_idvalues.Poll at a steady cadence that meets your reporting needs.
As a rule of thumb, every 10–15 minutes is a good starting point for “live” reporting without putting unnecessary load on the API.
If you need faster feedback (for example, during a short promotional burst), you can temporarily increase this to every 5 minutes, but we recommend avoiding more aggressive intervals unless you have a clear need.
If you ever receive 429 Too Many Requests, simply slow down and retry with backoff.
This approach helps you pick up late-finalised orders without needing to reprocess your entire history.
Best practices
Never send PII in
tq_click_idortq_campaign.Use
order_reference_idfor deduplication.Respect API rate limits and handle
429responses gracefully.If your
tq_campaignvalues contain spaces or special characters, ensure they are properly URL-encoded.
Last updated
Was this helpful?

