Ads profile
Ads profile
The ads_intelligence module profiles the marketing stack of each POI's website and condenses the findings into a single 0–100 marketing maturity score. It splits a list of prospects into two actionable segments: businesses that already invest in paid acquisition, and businesses still on a cold first-touch.
Detections match the homepage against community-maintained filter lists (uBlock Origin, EasyList, EasyPrivacy) plus a curated outsend signature table, covering advertising pixels, retargeting networks, CMPs, marketing CRMs and chat widgets.
Inputs
Only items with a non-empty site_web are processed.
| Field | Type | Required | Notes |
|---|---|---|---|
site_web |
string | yes | Absolute URL of the POI's website |
nom |
string | no | Carried through for reporting |
place_id |
string | no | Used to join back to the source list |
source_job_id |
string | no | ID of an upstream scrap job to chain |
Batch size: 1 to 10 000 items per job.
Outputs
Each input row keeps its original columns and gains the columns below. Lists are joined with \|; booleans are true or false. Paid-media pixels and retargeting weigh the most in the score; chat widgets the least.
| Column | Description |
|---|---|
ads_status |
ok, no_url, aggregator (directory listing, not analysed) or unreachable. |
ads_active |
true when at least one advertising signal was found. |
ads_intensity |
Number of advertising hits found on the page. |
ads_score |
Marketing maturity score, 0 to 100. |
ads_categories |
Categories of signals present (pixels, retargeting, analytics, CRM, chat, and so on). |
ads_networks |
Advertising and marketing networks identified. |
pixel_meta, pixel_google_ads, pixel_linkedin, pixel_tiktok, pixel_twitter, pixel_pinterest, pixel_snapchat |
One boolean per advertising pixel. |
analytics_ga, analytics_clarity, analytics_hotjar |
One boolean per major analytics tool. |
analytics_others |
Other analytics tools. |
retargeting |
Retargeting networks. |
display_networks, native_networks, affiliate_networks |
Display, native and affiliate networks. |
crm_marketing |
Marketing CRM or automation tools (for example hubspot, klaviyo, brevo). |
chat_widgets |
Chat solutions (for example intercom, crisp, drift). |
cmp_present, cmp_vendor |
Whether a consent management platform is present, and which one. |
unknown_trackers_count, unknown_trackers |
Third-party trackers that match no known signature. |
http_status, final_url, fetch_error |
Technical details of the page fetch. |
The file also carries one column per ad network (pixel_google_ads, pixel_linkedin, pixel_tiktok, pixel_twitter, pixel_pinterest, pixel_snapchat), analytics_clarity, analytics_hotjar, native_networks, affiliate_networks, cmp_vendor (consent tool) and unknown_trackers.
Lifecycle
Standard outsend job lifecycle; see /docs/concepts/jobs-lifecycle. Progress is reported per item in the sites unit.
Pipeline
| Direction | Keys |
|---|---|
needs |
site_web |
produces |
ads_active, ads_score, ads_networks, pixel_meta, pixel_google_ads, cmp_vendor, retargeting, crm_marketing, chat_widgets |
Any upstream job that emits site_web (typically scrap) can feed ads_intelligence. The job picker defaults to the most recent scrap job of the current account.
Endpoints
Create job
POST /api/jobs/ads-intelligence
{
"items": [
{ "site_web": "https://example.com", "nom": "Example", "place_id": "..." }
],
"source_job_id": "optional-upstream-job-uuid"
}
Response: a JobPublic document describing the newly created job (id, status, job_type, output_filename, ef_cost, timestamps).
| Status | When |
|---|---|
400 |
No item has a site_web, or per-job EF quota exceeded |
401 |
Missing or invalid session |
403 |
Account inactive |
422 |
Payload does not match the schema (e.g. items empty or > 10 000) |
Job state, progress and results are read through the shared job endpoints (GET /api/jobs/{id}, GET /api/jobs/{id}/results, SSE stream).
Limits
See /docs/concepts/limits. Per-item EF cost: ~1 / 3 / 3700 EF. Wall time per item: 0.6 to 6 s.
Errors
| Error | Cause |
|---|---|
Aucun établissement avec site web |
All items were missing site_web after normalisation |
Quota dépassé |
Estimated EF cost exceeds the per-job ceiling |
| Item-level fetch failure | Recorded on the row; the job continues with the next item |
| Empty homepage / non-HTML response | Row emitted with ads_score = 0 and empty detections |
What's next
Pair ads_intelligence with the following modules to extend the prospect profile: