Roku Ads Manager Conversions API Integration
Send call conversions from CallGrid to Roku Ads Manager with the Roku Advertising webhook template, and test that they arrive.
Updated 5 min read
Browse the knowledge base
On this page
Roku Ads Manager is a self-service connected TV (CTV) advertising platform. CallGrid's Roku Advertising webhook template sends call conversions to Roku's Conversions API (CAPI) so advertisers can measure and optimize CTV campaigns against real phone-call outcomes.
The webhook fires server to server on the call event you choose. The template sends a LEAD event with the caller's phone number hashed as [[hash:InboundNumberNoPlus]], event_time from [[tag:UTCUnixTime]], and the visitor IP address and user agent tags. Its only fields are API Key and event_group_id.
Prerequisites#
- Admin access in CallGrid.
- Organization or Account Admin access in Roku Ads Manager.
- Your Roku Event Group ID.
- A Roku CAPI API key (bearer token).
Find the Roku Event Group ID#
Roku's interface is third party and may change; if a step below does not match what you see, use the help in Roku Ads Manager for the current Events page.
- Sign in to Roku Ads Manager at https://ads.roku.com.
- Open the Events page (https://ads.roku.com/pixels).
- Find or create the Event Group you want to use.
- Copy the Event Group ID.
Generate the Roku CAPI API key#
- On the Events page, select CAPI.
- Click Generate an API key (requires Organization or Account Admin in Roku).
- Copy the key.
If a key is compromised, revoke it in Roku, create a new one and update the CallGrid webhook.
Setup#
Create the webhook, optionally limit which calls it reports, then attach it to each campaign that carries Roku traffic.
1. Create the webhook#


- In CallGrid, go to Integrations > Webhooks and click New Webhook.
- Name: a descriptive name, for example
Roku CAPI - Converted. - Event: the call event that counts as a Roku conversion. Common choices:
- Call Inbound: every inbound call.
- Call Answered: when the destination answers.
- Call Billable: when the call meets the billable criteria.
- Call Converted: when the call is marked converted, for example by a postback.
- Template Mode: choose Conversion Pixel (or All), then select Roku Advertising.
- Fill the template fields:
- API Key: the Roku CAPI API key.
- event_group_id: the Roku Event Group ID.
- Click Save Webhook.
The template builds the request to Roku's Conversions API, maps call data and sends the API key as a bearer token. No manual JSON or headers are needed.
All webhook events: Call Inbound, Call Initiated, Call Ended, Call Error, Call Answered, Call Billable, Call Paid, Call Converted, Insights Completed, Transcription Completed, Recording Completed, Bid Received, Postback Received.
Transitions: billable, paid and converted webhooks fire when a call transitions into that state, including through a bulk edit in Reports or PATCH /api/call. Correcting past calls to billable can therefore send conversions to Roku for those calls.
2. Limit which calls report (optional)#

To send only some traffic to Roku, for example one vendor's CTV sources:
- Recommended: attach the webhook only to the campaigns that carry Roku traffic (step 3), or split Roku sources into their own campaign.
- Per-webhook tag filters: integration webhooks support tag filters (for example SourceName, BuyerName, CampaignName or InboundState) so the webhook fires only for matching calls. Buyer and destination tags exist only from Call Initiated onward, not on Call Inbound.
3. Attach the webhook to the campaign#

A webhook fires only on campaigns it is attached to.
- Go to Campaigns and open the campaign that receives Roku traffic.
- On the General tab, add the Roku webhook in the Webhooks field.
- Save the campaign.
Repeat for each campaign that should report to Roku.
Testing#
- Open the webhook, fill in the Test Variables for the detected tags under Webhook Testing, and click Run Webhook.
- Confirm the response returns a success status.
- Check Roku Ads Manager for the conversion. Test events can take time to appear.
- For an end-to-end check, place a live test call into a campaign with the webhook attached, let it reach the chosen event, and confirm the conversion lands in Roku.
What CallGrid sends to Roku#

The template sends a POST to Roku's Conversions API endpoint (https://events.ads.rokuapi.net/v1/events) with the header Authorization: Bearer <API Key> and one event:
Roku field | Value sent |
|---|---|
| The event_group_id you entered |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Macro reference: [[tag:Name]] inserts a tag value, [[hash:Name]] a SHA-256 hash, [[lchash:Name]] a SHA-256 of the lowercased, whitespace-stripped value, [[number:Name]] a numeric value, [[b64:value]] the base64 of a tag's value when a tag with that name exists, otherwise of the text itself.
Other webhook options#
- Timeout: configure the request timeout on the webhook. The default is 5 seconds.
- Authorization: for endpoints that need an OAuth token fetch before the main request. Not needed for Roku, which uses the static API key.
- Use Static IP: sends requests from 3.232.249.88 and 54.160.65.103 for endpoints that allowlist IPs. Not normally needed for Roku.
Best practices#
- Match the Event to the advertiser's conversion definition: Call Billable or Call Converted for qualified calls, Call Inbound for every call.
- Attach the webhook only to campaigns carrying Roku traffic so unrelated calls do not inflate CTV conversions.
- Confirm the webhook is attached to every Roku campaign; an unattached webhook never fires.
- Keep the Event Group ID and API key current; update the webhook after rotating the key.
- Test with a live call before scaling spend.
Troubleshooting#
Symptom | Check |
|---|---|
No conversions in Roku | Webhook attached on the campaign General tab; correct Event; calls actually reach that event |
401 or authentication errors | API key pasted without spaces and not revoked in Roku |
Conversions in the wrong Event Group | Event Group ID matches the group you are viewing in Roku |
Too many or too few conversions | Event choice; which campaigns the webhook is attached to |
Conversions appear late | Roku reporting delay; allow time before assuming failure |
A burst of conversions for old calls | Calls bulk-edited to billable or converted fire transition webhooks |
Getting help#
Contact CallGrid support through live chat in the dashboard or at support@callgrid.com.
Do it with AI#
Ask Griddy, Claude or ChatGPT. Try: "Did the Roku webhook fire on my last billable call, and what status did Roku return?" Claude and ChatGPT need the CallGrid connector turned on (setup guides for Claude and ChatGPT).
The connector is read only. It looks things up and reads your data. You make the changes in CallGrid.
Was this article helpful?
Related articles
- CallGrid MCP: Connect to ChatGPTAsk ChatGPT about your CallGrid account in plain English. Connect the CallGrid app once, then pull campaigns, buyers, numbers and more.
- CallGrid MCP: Connect to Claude (Desktop)Connect Claude to your CallGrid account with the hosted MCP server: turn on MCP access, add the connector, sign in once, and start asking about your calls.
- Setting Up Meta Pixel Conversion WebhookSend call conversions to Meta through the Conversions API, server to server, so Meta can attribute calls to ads without relying on the browser pixel.