Digitalyser.io for developers

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.

GET/v1/projects/{projectId}/audits/analytics

Authorization

agent-token
AuthorizationBearer <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

projectId*string

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.

Formatuuid

Response 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).

Was this page helpful?