> ## Documentation Index
> Fetch the complete documentation index at: https://docs.erdo.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# GetPageTrackingAPI mirrors the erdo_get_page_tracking MCP tool: read which


> analytics destinations the caller org's published pages send visitor data to. The companion read to /v1/page-analytics/query — that endpoint reports what visitors did, this one reports whether anything was tagging them, which is the difference between "376 engaged sessions, retarget them" and discovering no pixel was ever firing.

Returns only public, client-side identifiers (the \`phc\_…\`/\`G-…\`/pixel-id values already embedded in published page JS); the provider's internal numeric project id is stripped here. Read-only by design: destinations are Erdo-provisioned into the account that must be able to use them, never caller-chosen.

These are the vendor destinations stored on the organization. Erdo's own first-party page-events beacon is provisioned per page at render time and is not among them, so an empty list means no vendor tracking rather than no recording.




## OpenAPI

````yaml /api/openapi.json get /v1/page-tracking
openapi: 3.0.0
info:
  title: Erdo API
  description: >-
    Erdo's REST API: query and write datasets, run agents, manage threads,
    integrations, pages, evals, workstreams, and experiments. Authenticate with
    a Bearer API key (erdo_api_...) or scoped token (erdo_token_...).
  version: '2026-07-26'
servers:
  - url: https://api.erdo.ai
    description: Production
security:
  - bearerAuth: []
paths:
  /v1/page-tracking:
    get:
      summary: >
        GetPageTrackingAPI mirrors the erdo_get_page_tracking MCP tool: read
        which
      description: >
        analytics destinations the caller org's published pages send visitor
        data to. The companion read to /v1/page-analytics/query — that endpoint
        reports what visitors did, this one reports whether anything was tagging
        them, which is the difference between "376 engaged sessions, retarget
        them" and discovering no pixel was ever firing.


        Returns only public, client-side identifiers (the
        \`phc\_…\`/\`G-…\`/pixel-id values already embedded in published page
        JS); the provider's internal numeric project id is stripped here.
        Read-only by design: destinations are Erdo-provisioned into the account
        that must be able to use them, never caller-chosen.


        These are the vendor destinations stored on the organization. Erdo's own
        first-party page-events beacon is provisioned per page at render time
        and is not among them, so an empty list means no vendor tracking rather
        than no recording.
      operationId: GET:mcp.GetPageTrackingAPI
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  consent:
                    description: >
                      banner. With "required", low or absent event volume can be
                      a consent gate rather than absent traffic.
                    title: >
                      Consent is "implied" or "required" — whether recording
                      waits on a consent
                    type: string
                  destinations:
                    description: >
                      enabled or not — the third-party analytics a published
                      page is wired to send to. Erdo's own first-party
                      page-events beacon is deliberately not among them: it is
                      provisioned per page on first render rather than stored on
                      the org, so an empty list here means no vendor tracking,
                      NOT that nothing is recording. The beacon is what
                      page-event queries read, and it runs independently.
                    items:
                      $ref: '#/components/schemas/mcp.PageTrackingDestinationInfo'
                    title: >
                      Destinations is every VENDOR destination configured on the
                      organization,
                    type: array
                  mask_inputs:
                    description: >
                      so a consumer building a replay-backed surface needs to
                      know whether the recordings it is about to show were
                      masked at capture time.
                    title: >
                      MaskInputs masks form-input values in session replay. Lead
                      forms carry PII,
                    type: boolean
                type: object
          description: Success response
        default:
          $ref: '#/components/responses/APIError'
components:
  schemas:
    mcp.PageTrackingDestinationInfo:
      description: >
        This is a curated projection, not the stored TrackingDestination: the
        stored struct also carries ProjectID, the provider's INTERNAL numeric
        project id (PostHog), which exists so the backend can read data back
        through the management API. It is not a client-side identifier, it never
        appears in page JS, and it must never cross /v1.
      properties:
        enabled:
          description: >
            but disabled destination is reported rather than hidden: "configured
            and switched off" and "never configured" are different problems with
            different fixes, and collapsing them is how a consumer draws the
            wrong conclusion.
          title: >
            Enabled is whether this destination fires on published pages. A
            configured
          type: boolean
        host:
          description: >
            empty means the provider default. It travels with PublicID because
            the id alone does not identify an instance — the same \`phc\_…\` key
            means different projects on different PostHog regions — so dropping
            it would make PublicID less verifiable without making anything more
            private.
          title: >
            Host is the ingest host events are sent to (e.g.
            https://us.i.posthog.com);
          type: string
        kind:
          description: >
            "session\_analytics" (heatmaps + replay), "google\_analytics",
            "meta\_pixel". Provider-agnostic — this is the field to branch on.
          title: |
            Kind is the Erdo-named capability the destination implements:
          type: string
        provider:
          description: >
            "google" for google\_analytics, "meta" for meta\_pixel) — an
            implementation detail, reported so an operator can go look in the
            right console.
          title: >
            Provider is the vendor behind the kind ("posthog" for
            session_analytics,
          type: string
        public_id:
          description: >
            by design — a PostHog \`phc\_…\` project key, a GA4 \`G-…\`
            measurement id, a numeric Meta pixel id. Included because "is a
            pixel enabled" is only half the question: a pixel can be enabled and
            still belong to an account the org's campaigns cannot target (a real
            incident — a pixel provisioned in an Erdo Business Manager was
            invisible to every campaign meant to use it). The id is what lets an
            operator match what fires on the page against what the ad account
            holds. It discloses nothing a page visitor cannot already read.
          title: >
            PublicID is the client-side identifier already embedded in published
            page JS
          type: string
      title: >
        PageTrackingDestinationInfo is one analytics destination as seen from
        /v1.
      type: object
  responses:
    APIError:
      content:
        application/json:
          schema:
            externalDocs:
              url: https://pkg.go.dev/encore.dev/beta/errs#Error
            properties:
              code:
                description: Error code
                example: not_found
                externalDocs:
                  url: https://pkg.go.dev/encore.dev/beta/errs#ErrCode
                type: string
              details:
                description: Error details
                type: object
              message:
                description: Error message
                type: string
            title: APIError
            type: object
      description: Error response
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: An Erdo API key (erdo_api_...) or scoped token (erdo_token_...).

````