{
  "schema_version": "covenant-advertising-integrations-1",
  "updated": "2026-10-31",
  "page": "docs/AD_CONNECTIONS.html",
  "scope": "Advertising connector readiness. Existing hosted service listings are described in docs/SERVICES.html; no live paid advertising or external demand connection is asserted here.",
  "readiness_definitions": {
    "DOCUMENTED": "An official provider route is documented; no runtime connector is asserted.",
    "LOCAL_FIXTURE": "Request construction, response parsing or reconciliation is implemented for local fixtures; partner conformance and live operation are not established.",
    "OWNER_CONFIG_REQUIRED": "Promotion building blocks exist in the reviewed implementation; the owner must adopt and configure the programme before activation."
  },
  "integrations": [
    {
      "id": "covenant-direct-promotion",
      "name": "Covenant direct sponsored offers",
      "purpose": "COVENANT_PROMOTION",
      "readiness": "OWNER_CONFIG_REQUIRED",
      "live": false,
      "pricing_events": ["CPA"],
      "pricing_note": "The qualified-action route concerns an agreed completed Covenant outcome. Separate fixed-placement products follow their own terms.",
      "money_flow": "An advertiser funds an adopted promotion programme. Owner, integrator and operator treatment follows its agreed rules.",
      "exists": ["Labelled sponsored-offer and auction building blocks", "Organic ranking and reputation separation", "Local funding and settlement records"],
      "required_before_live": ["Owner-adopted programme and placement terms", "Actual funding and delivery evidence", "Qualified settlement and reconciliation"],
      "page": "docs/AD_CONNECTIONS.html#covenant-promotion",
      "related_pages": ["docs/SERVICES.html", "docs/CAPABILITIES.html#discovery", "docs/PRICING.html"],
      "official_sources": []
    },
    {
      "id": "covenant-referral-promotion",
      "name": "Covenant earned referral promotion",
      "purpose": "COVENANT_PROMOTION",
      "readiness": "OWNER_CONFIG_REQUIRED",
      "live": false,
      "pricing_events": [],
      "pricing_note": "Non-cash promotion units; no CPM, CPC or CPA cash payout is asserted.",
      "money_flow": "No money transfer. Units redeem only for an explicitly labelled Referral reward placement under the adopted programme.",
      "exists": ["Verified referral and separately verified opted-in sharing profiles", "Programme limits and duplicate checks", "Separate earned placement records"],
      "required_before_live": ["Owner-adopted eligibility and evidence rules", "Independently pinned verification authority", "Consenting listing and configured publisher"],
      "excluded_reward_events": ["Google ad impressions", "Google ad clicks", "Unverified sharing claims"],
      "page": "docs/AD_CONNECTIONS.html#covenant-promotion",
      "related_pages": ["docs/SERVICES.html#promotion", "docs/START.html?task=advertise&source=ad-connections"],
      "official_sources": []
    },
    {
      "id": "google-ads",
      "name": "Google Ads",
      "purpose": "BUY_TRAFFIC",
      "readiness": "DOCUMENTED",
      "live": false,
      "pricing_events": ["CPC", "CPM"],
      "pricing_note": "The Google product and bid strategy determine billing. A target CPA is a bidding or measurement goal, not a promise to charge only for a completed Covenant agreement.",
      "money_flow": "Campaign spend is an expense in the advertiser's Google account. API usage is free; provider advertising charges are separate from Covenant fees.",
      "exists": ["Public integration guidance"],
      "required_before_live": ["Enabled Google Cloud project and appropriate API access level", "Authenticated access to the chosen advertiser account", "Runtime marketing adapter and test-account qualification", "Explicitly approved campaign, permissions and budget"],
      "zero_spend_test": "Google test accounts have no billing and do not serve ads.",
      "access_note": "Google sunset developer tokens on 2026-09-09. New Google Ads API access is managed by the Google Cloud project.",
      "page": "docs/AD_CONNECTIONS.html#buy-traffic",
      "official_sources": ["https://developers.google.com/google-ads/api/docs/get-started/make-first-call", "https://developers.google.com/google-ads/api/docs/api-policy/developer-token", "https://developers.google.com/google-ads/api/docs/best-practices/test-accounts", "https://developers.google.com/google-ads/api/docs/productionize/access-levels"]
    },
    {
      "id": "google-adsense",
      "name": "Google AdSense for Content",
      "purpose": "MONETIZE_WEB",
      "readiness": "DOCUMENTED",
      "live": false,
      "pricing_events": ["CPM"],
      "pricing_note": "Google describes publisher payments by impression using eCPM. Estimated revenue is not a received payment.",
      "money_flow": "External publisher earnings. Google publishes an 80% share after the advertiser platform's fee and approximately 68% when Google Ads buys the inventory.",
      "exists": ["Public publisher and reporting guidance"],
      "required_before_live": ["Approved AdSense account and eligible approved site", "Human-facing web ad implementation", "Traffic-quality and applicable consent controls", "Authenticated reporting connector if earnings import is wanted"],
      "inventory_boundary": "Agent or bot activity is not offered as Google publisher impressions. The Management API is not an agent offer feed.",
      "excluded_reward_events": ["Google ad impressions", "Google ad clicks"],
      "page": "docs/AD_CONNECTIONS.html#web-publishing",
      "official_sources": ["https://support.google.com/adsense/answer/9724", "https://developers.google.com/adsense/management/getting_started", "https://support.google.com/adsense/answer/180195", "https://support.google.com/adsense/answer/13554116", "https://support.google.com/adsense/answer/2660562"]
    },
    {
      "id": "google-ad-manager",
      "name": "Google Ad Manager",
      "purpose": "MONETIZE_WEB",
      "readiness": "DOCUMENTED",
      "live": false,
      "pricing_events": [],
      "pricing_note": "Inventory, charging model, provider fees and revenue share depend on the publisher's actual products and contracts; none are assumed here.",
      "money_flow": "Publisher inventory and external advertising accounts remain separate from Covenant trading balances.",
      "exists": ["Public account and API guidance"],
      "required_before_live": ["Valid AdSense account and Ad Manager network access", "Enabled API and authenticated network permissions", "Publisher inventory and browser implementation", "Separately confirmed demand access, commercial terms and consent controls"],
      "page": "docs/AD_CONNECTIONS.html#web-publishing",
      "official_sources": ["https://support.google.com/admanager/answer/7084151", "https://developers.google.com/ad-manager/api/beta/getting-started", "https://support.google.com/adsense/answer/13554116"]
    },
    {
      "id": "openrtb-native",
      "name": "OpenRTB 2.6 native demand",
      "purpose": "EXTERNAL_NATIVE_DEMAND",
      "readiness": "LOCAL_FIXTURE",
      "live": false,
      "pricing_events": ["CPM"],
      "pricing_note": "The current parser converts a CPM bid to a quoted per-impression amount. Qualified delivery and partner billing still need implementation and conformance.",
      "money_flow": "External network quotes and reconciliation. No provider earnings are credited to or transferred through a Covenant trading balance.",
      "exists": ["Native request builder and structured creative parser", "HTML and script rejection", "Local quote and signed-event reconciliation fixtures"],
      "required_before_live": ["Partner publisher seat accepting the intended inventory and audience", "Actual publisher and site or app identity", "Owner-supplied authenticated network transport", "Adopted privacy signals and authorised seller records", "Distinct qualified impression, click and conversion events", "Verified partner events or reports and durable reconciliation", "End-to-end partner conformance"],
      "page": "docs/AD_CONNECTIONS.html#native-demand",
      "official_sources": ["https://github.com/InteractiveAdvertisingBureau/openrtb2.x", "https://github.com/InteractiveAdvertisingBureau/AdCOM", "https://iabtechlab.com/ads-txt/"]
    },
    {
      "id": "prebid-server-native",
      "name": "Prebid Server native demand",
      "purpose": "EXTERNAL_NATIVE_DEMAND",
      "readiness": "LOCAL_FIXTURE",
      "live": false,
      "pricing_events": ["CPM"],
      "pricing_note": "Native CPM auction fixtures use the OpenRTB route. Running a server supplies no advertiser demand by itself.",
      "money_flow": "Publisher earnings follow the actual bidder and hosting agreements. Hosting costs and bidder terms have not been assumed.",
      "exists": ["Native auction request path and local response fixtures"],
      "required_before_live": ["Configured Prebid Server and approved bidder seat", "Partner acceptance of intended inventory and audience", "OpenRTB delivery, privacy, reporting and reconciliation qualification", "Actual hosting and bidder commercial terms"],
      "page": "docs/AD_CONNECTIONS.html#native-demand",
      "official_sources": ["https://docs.prebid.org/prebid-server/overview/prebid-server-overview.html", "https://github.com/InteractiveAdvertisingBureau/openrtb2.x"]
    }
  ],
  "shared_controls": {
    "automatic_spend": false,
    "provider_signup_performed": false,
    "credentials_in_public_metadata": false,
    "google_ad_view_or_click_rewards": false,
    "bot_activity_offered_as_google_publisher_impressions": false,
    "organic_ranking_affected_by_promotion": false,
    "private_ad_request_data": "Do not send private queries, agreement terms, credentials or customer records. Use only owner-approved public context.",
    "accounting": "Keep Covenant fees and licensing, external advertising spend, external publisher earnings and non-cash referral units separate."
  }
}
