Analytics audit results
Results of the project's most recent analytics audit — traffic, acquisition channels, engagement, and the coverage of the measurement itself.
Results of the project's most recent analytics audit — traffic, acquisition channels, engagement, and the coverage of the measurement itself.
Coverage is part of the answer, not a footnote: a channel with no data and a channel that was never instrumented look identical in a chart and mean opposite things.
/v1/projects/{projectId}/audits/analyticsAuthorization
agent-token An agent project token. Obtained by OAuth consent for an AI client, or derived per project from an organisation service key for a machine. A scoped API key authenticates the transport but opens no capability: a capability takes its project from the credential.
In: header
Path Parameters
The project this call is about. A routing hint, not an authorisation. The project comes from the credential; this segment exists so multi-project code stays uniform. If it names a project outside the token, the call is refused with routing_hint_mismatch — it is never used to widen access.
uuidResponse Body
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://app.digitalyser.io/api/v1/projects/550e8400-e29b-41d4-a716-446655440000/audits/analytics" \ -H "Authorization: Bearer <token>"{ "schemaVersion": "2", "meta": { "generatedAt": "2026-09-24T06:18:40.000Z" }, "project": { "id": "8f14e45f-ea0e-4b1e-9b7a-2c3d4e5f6071", "brandName": "Acme Corporation", "websiteUrl": "https://www.acme.example" }, "status": "completed", "createdAt": "2026-09-24T06:11:03.000Z", "completedAt": "2026-09-24T06:18:40.000Z", "readinessState": "completed", "freshnessState": "current", "scoreAvailabilityState": "available", "scoreSuppressionReason": "No analytics tool was reachable, so nothing could be scored.", "toolStates": [ { "toolName": "Google Tag Manager", "state": "installed", "reasonCode": "container_loaded_without_tags" } ], "stats": { "toolsDetected": 6, "toolsMissing": 4, "pillarCount": 6, "averagePillarScore": 63, "consentDetected": true, "tagManagerDetected": true, "analyticsDetected": true }, "tools": [ { "name": "Google Analytics 4", "categoryId": "web_analytics", "pillarId": "analytics_measurement", "match": "gtag/js?id=G-XXXXXXX", "description": "Measures sessions, traffic sources and conversions.", "status": "detected", "priority": "critical" } ], "pillars": [ { "id": "analytics_measurement", "label": "Analytics and measurement", "description": "Audience measurement, traffic sources and conversion tracking.", "explanation": { "whatItMeans": "Whether visits, sources and conversions are measured at all.", "whyItMatters": "Without it, every decision about where to spend is a guess." }, "score": 72, "weight": 0.3, "toolsDetected": [ { "name": "Google Analytics 4", "categoryId": "web_analytics", "pillarId": "analytics_measurement", "match": "gtag/js?id=G-XXXXXXX", "description": "Measures sessions, traffic sources and conversions.", "status": "detected", "priority": "critical" } ], "toolsMissing": [ { "name": "Google Analytics 4", "categoryId": "web_analytics", "pillarId": "analytics_measurement", "match": "gtag/js?id=G-XXXXXXX", "description": "Measures sessions, traffic sources and conversions.", "status": "detected", "priority": "critical" } ], "categories": [ { "id": "web_analytics", "label": "Web analytics", "hasMinimum": true } ] } ], "tasks": { "todo": [ { "id": "c4a9f1e7-52b8-4d63-9e01-3f7b6c8a2d45", "title": "Install a consent banner before any analytics tag fires", "description": "Analytics loads on the first page view with no consent gate. Beyond the legal exposure, the measurement it produces cannot be relied on for anything consent-dependent.", "status": "todo", "priority": "critical", "pillarId": "tag_management", "impactPotential": 9, "estimatedTime": "half a day", "suggestions": [ "Gate every tag behind the consent state in the tag manager", "Re-check the pillar once the banner is live" ] } ], "done": [ { "id": "c4a9f1e7-52b8-4d63-9e01-3f7b6c8a2d45", "title": "Install a consent banner before any analytics tag fires", "description": "Analytics loads on the first page view with no consent gate. Beyond the legal exposure, the measurement it produces cannot be relied on for anything consent-dependent.", "status": "todo", "priority": "critical", "pillarId": "tag_management", "impactPotential": 9, "estimatedTime": "half a day", "suggestions": [ "Gate every tag behind the consent state in the tag manager", "Re-check the pillar once the banner is live" ] } ], "priority": { "critical": [ { "id": "c4a9f1e7-52b8-4d63-9e01-3f7b6c8a2d45", "title": "Install a consent banner before any analytics tag fires", "description": "Analytics loads on the first page view with no consent gate. Beyond the legal exposure, the measurement it produces cannot be relied on for anything consent-dependent.", "status": "todo", "priority": "critical", "pillarId": "tag_management", "impactPotential": 9, "estimatedTime": "half a day" } ], "high": [ { "id": "c4a9f1e7-52b8-4d63-9e01-3f7b6c8a2d45", "title": "Install a consent banner before any analytics tag fires", "description": "Analytics loads on the first page view with no consent gate. Beyond the legal exposure, the measurement it produces cannot be relied on for anything consent-dependent.", "status": "todo", "priority": "critical", "pillarId": "tag_management", "impactPotential": 9, "estimatedTime": "half a day" } ], "medium": [ { "id": "c4a9f1e7-52b8-4d63-9e01-3f7b6c8a2d45", "title": "Install a consent banner before any analytics tag fires", "description": "Analytics loads on the first page view with no consent gate. Beyond the legal exposure, the measurement it produces cannot be relied on for anything consent-dependent.", "status": "todo", "priority": "critical", "pillarId": "tag_management", "impactPotential": 9, "estimatedTime": "half a day" } ], "low": [ { "id": "c4a9f1e7-52b8-4d63-9e01-3f7b6c8a2d45", "title": "Install a consent banner before any analytics tag fires", "description": "Analytics loads on the first page view with no consent gate. Beyond the legal exposure, the measurement it produces cannot be relied on for anything consent-dependent.", "status": "todo", "priority": "critical", "pillarId": "tag_management", "impactPotential": 9, "estimatedTime": "half a day" } ] } }, "score": { "global": 58 }, "recommendations": { "immediate": [ "Gate every analytics tag behind the consent state" ], "shortTerm": [ "Declare the three conversions that matter as events" ], "longTerm": [ "Move the remaining hard-coded tags into the tag manager" ] }, "competitors": [ { "name": "Globex Joinery", "url": "https://globex.example", "globalScore": 51, "toolCount": 4 } ], "scoreHistory": [ { "date": "2026-08-27T06:14:22.000Z", "globalScore": 52 } ]}Generated from the capability registry — API version 1, 18 paths, from 4815355 (2026-10-12).
AI discoverability audit results GET
How the project surfaces in AI assistants — whether it is cited, on which prompts, and against which competitors.
Cross-module audit overview GET
Aggregated scores for every audit module — local visibility, online reputation, online presence, content, analytics, AI discoverability — plus a comparison radar against the competitor benchmark.