Overview
The Channel99 Reporting API gives customers programmatic access to Channel99 reporting data, including web traffic, vendor performance, campaign performance, audience engagement, pixel exposure, and revenue influence metrics.
Use the Reporting API to:
- Export Channel99 reporting data into a data warehouse or BI tool.
- Build recurring performance reports for teams or customers.
- Analyze vendor, channel, campaign, company, audience, or opportunity-level performance.
- Compare paid media spend, impressions, clicks, visits, engaged companies, pipeline influence, and closed-won influence.
- Combine Channel99 performance data with internal reporting workflows.
This article is intended for developers and technical administrators who want to connect to Channel99 reporting data using the API.
Before you begin
You will need:
- An active Channel99 account.
- Access to the Channel99 instance you want to report on.
- API credentials or an access token issued by Channel99.
- The relevant audience, vendor, channel, campaign, or date filters for your report.
- Access to the API reference at:
https://pulsar.channel99.com/docs/#/
Authentication
Use the authentication method shown in the Swagger documentation for your account.
Most Channel99 API requests should include an authorization header similar to:
Authorization: Bearer <access_token>
Content-Type: application/jsonReplace <access_token> with the API token provided for your Channel99 account.
Do not share API tokens in emails, tickets, browser screenshots, logs, or client-side code.
Base URL
Use the base URL shown in the Swagger documentation:
https://pulsar.channel99.comExample request format:
GET https://pulsar.channel99.com/<endpoint>
Authorization: Bearer <access_token>Confirm the exact endpoint paths in the Swagger documentation before implementing.
Common reporting concepts
Date range
Most reporting requests require a start date and end date.
Use ISO-style dates or timestamps as defined in Swagger, for example:
2026-01-01
2026-01-31or:
2026-01-01T00:00:00Z
2026-01-31T23:59:59ZRecommended practice:
- Use a complete date range for repeatable reporting.
- Avoid using open-ended ranges for large exports.
- Make sure the end date is later than the start date.
- Use the same timezone convention across all reporting jobs.
Audience
An audience is a defined group of companies used to evaluate marketing performance. Audiences can include uploaded account lists or CRM-based account segments.
Common use cases:
- Reporting against TAM.
- Reporting against a target account list.
- Comparing audience visits against total visits.
- Calculating fit score and visit efficiency.
When no specific audience is selected in Channel99 reporting, the platform typically uses the default audience or TAM, depending on account configuration.
Channel
A channel represents a marketing source category, such as paid search, paid social, direct traffic, organic search, email, PR, events, or other configured channels.
Use channel filters when you want to report performance by marketing source category.
Vendor
A vendor represents a traffic, media, or campaign source associated with a channel. Vendor-level reporting is commonly used to compare partner, platform, or source performance.
The Channel99 Vendors section includes metrics such as:
- Total visits
- Selected audience visits
- Engaged companies
- Pipeline influence
- Closed-won influence
- Vendor scoring
- Return on marketing spend
- Visit efficiency
Campaign
A campaign represents a marketing campaign imported or tracked through Channel99 integrations. Campaign-level reporting depends on the available integrations and campaign metadata connected to the Channel99 instance.
Campaign reporting can include:
- Spend
- Impressions
- Clicks
- Visits
- Target audience visits
- Engaged companies
- Pipeline influence
- Closed-won influence
- Fit score
Company
A company is an identified organization associated with visits, impressions, audience membership, CRM accounts, or influenced opportunities.
Company-level reporting can be used to understand which accounts visited, engaged, reached, or influenced pipeline.
Pixel impressions
Pixel impressions represent ad exposure events captured through the Channel99 Pixel. Pixel reporting can help show which companies were reached by advertising and whether exposure later resulted in a website visit.
Pixel reporting may include:
- Impressions by company
- Impressions by vendor
- Impressions by campaign
- Bot impressions
- Target audience impressions
- View-through visits
- Click-through indicators
Common request parameters
The exact request shape depends on the endpoint. Refer to Swagger for required and optional parameters.
Common parameters may include:
| Parameter | Description |
|---|---|
start_date | Start of the reporting period. |
end_date | End of the reporting period. |
group_by | Reporting dimension, such as channel, vendor, campaign, company, opportunity, ad group, or keyword. |
audience_id | Audience used for target account and fit-score calculations. |
channel_id | Filters reporting to one or more channels. |
vendor_id | Filters reporting to one or more vendors. |
campaign_id | Filters reporting to one or more campaigns. |
company_id | Filters reporting to one or more companies. |
opportunity_id | Filters reporting to one or more CRM opportunities. |
limit | Maximum number of records to return, if supported. |
offset or cursor | Pagination control, if supported. |
Grouping options
Reporting endpoints may support grouping by a business dimension.
Common grouping values include:
| Group by | Description |
|---|---|
channel | Summarizes performance by marketing channel. |
vendor | Summarizes performance by vendor or source. |
campaign | Summarizes performance by campaign. |
company | Summarizes performance by identified company. |
opportunity | Summarizes performance by CRM opportunity. |
ad_group | Summarizes performance by ad group. |
keyword | Summarizes performance by ad keyword. |
Confirm the exact accepted values in Swagger.
Core metrics
The Reporting API may expose some or all of the following metrics, depending on endpoint, grouping, integrations, and filters.
Spend and advertising delivery
| Metric | Definition |
|---|---|
sum_spend | Total media spend for the selected period and filters. |
sum_ad_impressions | Total ad impressions imported from connected ad platforms. |
sum_ad_clicks | Total ad clicks imported from connected ad platforms. |
count_campaigns | Count of distinct campaigns represented in the result. |
count_keywords | Count of distinct ad keywords represented in the result. |
Visit metrics
| Metric | Definition |
|---|---|
count_visits | Total number of visits. Includes target audience visits, other resolved visits, bot visits, and unresolved visits. |
count_target_visits | Count of visits identified as belonging to the selected audience. |
count_bot_visits | Count of visits identified as bot traffic. |
count_unresolved_visits | Count of visits where the IP address was not resolved by Channel99’s identification network. |
count_other_visits | Count of resolved visits excluding bot and target audience traffic. |
visit_efficiency | Ratio of target audience visits to resolved visits. This helps show how efficiently traffic reaches the selected audience. |
View-through visit metrics
| Metric | Definition |
|---|---|
count_view_through_visits | Count of visits that occurred after a relevant exposure event, such as an ad impression or offline event. |
count_target_view_through_visits | View-through visits from companies in the selected audience. |
count_bot_view_through_visits | View-through visits identified as bot traffic. |
count_unresolved_view_through_visits | View-through visits where the company could not be resolved. |
count_other_view_through_visits | Resolved view-through visits excluding bot and target audience traffic. |
Company engagement and reach metrics
| Metric | Definition |
|---|---|
count_engaged_companies | Count of companies that engaged during the selected period. |
count_reached_companies | Count of companies reached during the selected period. |
fit_score | Channel99’s proprietary score showing how well the object, such as a campaign, vendor, or channel, fits the selected audience. The score ranges from 0 to 100, where 100 is best. |
Pipeline and revenue influence metrics
| Metric | Definition |
|---|---|
sum_pipeline_influenced | Total pipeline revenue influenced during the selected period. |
count_pipeline_influenced | Count of pipeline opportunities influenced during the selected period. |
sum_closedwon_influenced | Total closed-won revenue influenced during the selected period. |
count_closedwon_influenced | Count of closed-won opportunities influenced during the selected period. |
count_leads_influenced | Count of leads influenced during the selected period. |
sum_net_new_revenue | Sum of influenced revenue. When no audience filter is applied, this is typically influenced by TAM visits; when an audience filter is applied, this reflects audience-influenced visits. |
pipeline_influenced_per_spend | Ratio of influenced pipeline revenue to spend. |
count_opps_influenced | Count of influenced opportunities. |
percent_opps_influenced | Ratio of influenced opportunity count within the result group to the overall opportunity count. |
Attribution metrics
| Metric | Definition |
|---|---|
opportunity_influenced_sum_pipeline_first_touch | Pipeline influence attributed using first-touch attribution. |
opportunity_influenced_sum_pipeline_last_touch | Pipeline influence attributed using last-touch attribution. |
opportunity_influenced_sum_pipeline_linear | Pipeline influence attributed using linear attribution. |
opportunity_influenced_sum_closedwon_first_touch | Closed-won influence attributed using first-touch attribution. |
opportunity_influenced_sum_closedwon_linear | Closed-won influence attributed using linear attribution. |
opportunity_id_list | List of opportunity IDs associated with the reporting result. |
Efficiency metrics
| Metric | Definition |
|---|---|
spend_per_engaged_company | Spend divided by engaged company count. |
spend_per_visit | Spend divided by total visit count. |
spend_per_target_visit | Spend divided by target audience visit count. |
visit_efficiency | Target audience visits divided by resolved visits. |
pipeline_influenced_per_spend | Influenced pipeline revenue divided by spend. |
Example: vendor performance report
Use a vendor performance report when you want to compare vendors across traffic, engagement, spend efficiency, and revenue influence.
Example request pattern:
GET /<reporting-endpoint>?start_date=2026-01-01&end_date=2026-01-31&group_by=vendor&audience_id=<audience_id>
Authorization: Bearer <access_token>Example response pattern:
{
"data": [
{
"vendor_id": "vendor_123",
"vendor_name": "Example Vendor",
"sum_spend": 12500.00,
"sum_ad_impressions": 450000,
"sum_ad_clicks": 3200,
"count_visits": 875,
"count_target_visits": 214,
"visit_efficiency": 0.2446,
"count_engaged_companies": 86,
"sum_pipeline_influenced": 275000.00,
"sum_closedwon_influenced": 60000.00,
"spend_per_engaged_company": 145.35,
"fit_score": 82
}
]
}The field names above should be verified against the Swagger response schema before publishing.
Example: campaign performance report
Use a campaign performance report to evaluate which campaigns are driving account engagement and revenue influence.
Example request pattern:
GET /<reporting-endpoint>?start_date=2026-01-01&end_date=2026-01-31&group_by=campaign&audience_id=<audience_id>
Authorization: Bearer <access_token>Example response pattern:
{
"data": [
{
"campaign_id": "campaign_123",
"campaign_name": "Q1 Enterprise Campaign",
"sum_spend": 8500.00,
"sum_ad_impressions": 260000,
"sum_ad_clicks": 1400,
"count_visits": 420,
"count_target_visits": 118,
"count_engaged_companies": 42,
"sum_pipeline_influenced": 175000.00,
"pipeline_influenced_per_spend": 20.59,
"fit_score": 76
}
]
}Example: company visit report
Use a company visit report to understand which companies visited your website during a reporting period.
Example request pattern:
GET /<visits-endpoint>?start_date=2026-01-01&end_date=2026-01-31
Authorization: Bearer <access_token>Example response pattern:
{
"data": [
{
"visit_id": "visit_123",
"visit_date": "2026-01-15T18:42:00Z",
"visit_page": "https://example.com/pricing",
"company_id": "company_123",
"company_name": "Example Company",
"company_tld": "example.com",
"channel_id": "channel_123",
"vendor_id": "vendor_123",
"ad_campaign_id": "campaign_123",
"is_tam": true,
"audience_list": ["audience_123"]
}
]
}Example: pixel impression report
Use a pixel impression report to understand which companies were exposed to advertising and whether those exposures led to view-through or click-through activity.
Example request pattern:
GET /<pixel-impressions-endpoint>?start_date=2026-01-01&end_date=2026-01-31
Authorization: Bearer <access_token>Example response pattern:
{
"data": [
{
"pixel_impressions_id": "pixel_impression_123",
"event_date": "2026-01-15T18:42:00Z",
"current_page": "https://example.com/ad-landing-page",
"company_id": "company_123",
"company_name": "Example Company",
"company_tld": "example.com",
"channel_id": "channel_123",
"vendor_id": "vendor_123",
"ad_campaign_id": "campaign_123",
"is_bot": false,
"is_tam": true,
"audience_list": ["audience_123"],
"viewthrough_visit_id": "visit_456",
"in_relevant_audience": true,
"is_click_through": false
}
]
}Pagination
For large reports, the API may paginate results.
Refer to Swagger for the supported pagination method. Common patterns include:
limit
offsetor:
cursor
next_cursorRecommended practice:
- Use a reasonable page size.
- Continue requesting pages until no next page or cursor is returned.
- Store the date range and filters used for each export.
- Retry failed pages rather than restarting the full export when possible.
Filtering
Reporting endpoints may support filters such as:
- Date range
- Audience
- Channel
- Vendor
- Campaign
- Company
- Opportunity
- Region
- Sector
- Revenue range
- Ad group
- Keyword
When using filters, make sure you pass the object ID expected by the API rather than a display name, unless the Swagger documentation explicitly supports name-based filtering.
Interpreting common metrics
Total visits vs. target visits
count_visits includes all visits in the selected result set, including target audience visits, other resolved visits, bot visits, and unresolved visits.
count_target_visits includes only visits from companies in the selected audience.
Use visit_efficiency to understand how much of the resolved traffic is coming from the selected audience.
Engaged companies vs. reached companies
count_reached_companies measures companies that were reached during the selected period.
count_engaged_companies measures companies that engaged during the selected period.
The exact engagement criteria may depend on Channel99 configuration and reporting context.
Pipeline influence vs. closed-won influence
sum_pipeline_influenced measures revenue from influenced pipeline opportunities.
sum_closedwon_influenced measures revenue from influenced closed-won opportunities.
Use these metrics together to understand both current pipeline impact and realized revenue impact.
Fit score
fit_score is Channel99’s proprietary audience-fit score for a reporting object, such as a vendor, channel, campaign, company, or keyword.
The score ranges from 0 to 100.
Higher scores indicate stronger fit with the selected audience.
Error handling
The API may return standard HTTP status codes.
| Status code | Meaning | Recommended action |
|---|---|---|
200 | Request succeeded. | Process the response. |
400 | Bad request. | Check required parameters, parameter formats, and date ranges. |
401 | Unauthorized. | Confirm the access token is valid and included in the request. |
403 | Forbidden. | Confirm the user or token has access to the requested account or resource. |
404 | Not found. | Confirm the endpoint path and object IDs. |
429 | Rate limited. | Retry using backoff. |
500 | Server error. | Retry later or contact Channel99 Support if the issue persists. |
Rate limits
Refer to the Swagger documentation or your Channel99 contract for rate-limit details.
Recommended implementation pattern:
- Use exponential backoff for
429responses. - Avoid parallel requests over very large date ranges.
- Cache lookup data such as channel, vendor, campaign, and audience IDs.
- Schedule large exports during off-peak hours where possible.
Data freshness
Reporting data may depend on the timing of:
- Channel99 Pixel activity
- Website visit identification
- Ad platform imports
- CRM imports
- Opportunity and revenue updates
- Audience refreshes
If recently updated data does not appear immediately, allow time for the relevant integration or data pipeline to refresh.
Best practices
- Use IDs, not display names, for filters when possible.
- Always include explicit start and end dates.
- Keep date ranges small for high-volume exports.
- Store request metadata with exported results.
- Reconcile API totals with the Channel99 UI using the same filters, audience, and date range.
- Treat bot and unresolved traffic separately when calculating performance.
- Use target audience metrics when reporting account-based marketing performance.
- Use spend efficiency metrics only when spend data is available from connected ad platforms.
- Use revenue influence metrics only when CRM opportunity data is connected and available.
Troubleshooting
The report returns no data
Check that:
- The date range contains activity.
- The selected audience has matching companies.
- The channel, vendor, campaign, or company IDs are valid.
- The required integrations are connected.
- The same filters return data in the Channel99 UI.
Spend, impressions, or clicks are missing
These metrics depend on connected ad platform integrations. Confirm that:
- The relevant ad platform is connected.
- Campaign data has synced successfully.
- The selected date range contains imported spend, impression, or click data.
- The selected grouping supports ad delivery metrics.
Pipeline or closed-won influence is missing
Revenue influence metrics depend on CRM data. Confirm that:
- Salesforce, HubSpot, or the relevant CRM is connected.
- Opportunity data is available in Channel99.
- Opportunities have revenue and stage data.
- The selected date range includes influenced activity.
- The selected audience and filters match the expected accounts.
Visit totals do not match another system
Channel99 reporting may classify visits into target audience, other resolved, bot, and unresolved categories.
When comparing totals, confirm that both systems use the same:
- Date range
- Timezone
- Bot filtering
- Audience filter
- Attribution logic
- Vendor or campaign mapping
- Page/session definition
Support
For help with the Reporting API, contact Channel99 Support and include:
- The endpoint used.
- Request parameters, excluding API credentials.
- Date range.
- Account or instance name.
- Expected result.
- Actual result.
- Any error response body.
- Approximate time the request was made.
Do not include API tokens or secrets in support tickets.
Comments
0 comments
Article is closed for comments.