Skip to content

feat: attribute SDK acquisition - #739

Open
acedatacloud-dev wants to merge 1 commit into
mainfrom
feat/attribute-sdk-acquisition
Open

feat: attribute SDK acquisition#739
acedatacloud-dev wants to merge 1 commit into
mainfrom
feat/attribute-sdk-acquisition

Conversation

@acedatacloud-dev

Copy link
Copy Markdown
Member

Why

The SDK repository exposes four distinct developer entry points—the catalog plus Python, TypeScript, and Go—but none provides a measurable API-key acquisition link. A developer can discover and install an SDK, then register, while the existing attribution funnel records that signup as direct traffic.

That makes it impossible to compare SDK languages by downstream activation and payment. Package downloads alone are not users, so the registration path needs stable campaign labels before download growth can inform investment.

What changed

  • add one explicit Get an API key CTA near the top of each canonical README;
  • assign one stable campaign per surface:
    • root catalog: sdk-catalog
    • Python: sdk-python
    • TypeScript: sdk-typescript
    • Go: sdk-go
  • use utm_source=github&utm_medium=repo consistently;
  • add a fail-closed checker requiring exactly one marker and one matching URL per README;
  • run that checker in the existing provider-generation CI job.

The ordinary AceDataCloud product links remain untagged. Only the high-intent API-key CTA is attributed, preserving the distinction between product browsing and acquisition.

Validation

  • python3.12 scripts/check_acquisition_links.py — 4 canonical campaigns matched
  • python3.12 -m py_compile scripts/check_acquisition_links.py — passed
  • provider generator executed for Python/TypeScript/Go; generator-owned runtime paths remained unchanged
  • assertion that SDK runtime and existing test paths have no diff — passed
  • git diff --check — clean

A local test_language_parity.py attempt could not collect because the current Python environment did not have this repository package installed. This PR changes no runtime code; the normal CI matrix installs each SDK and remains authoritative for language/runtime tests.

Scope boundaries

This PR does not change SDK behavior, generated providers, package metadata, authentication, pricing, or referral ownership. It adds no inviter_id. It also does not claim that README clicks or package downloads are users; the existing server-side cohort determines signup, usage, and payment outcomes.

Rollback

Revert this commit to remove the four CTA markers and CI checker. No application deployment or database migration is involved.

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant