adsparkle_flutter
Flutter client SDK for the AdSparkle affiliate attribution tracking platform. Deterministic Android install attribution via the Play Install Referrer; pure Dart on every other platform.
What this package is like to depend on
Last release 16 days ago
07 Aug 2026
Ships on a steady schedule
a new release about every 2 weeks
Nearly every release is documented
notes for 7 of 7 stable releases
Nothing withdrawn
no release was ever pulled
2 months old
7 releases · first in 2026
7 releases in the last 12 months
see the full history below
Release timeline
7 releases · Jun 2026 to Aug 2026Releases
latest 7-
0.1.707 Aug 2026Release notes
Open source →- New attribution callback:
AdSparkle.instance.onClickId = (clickId) { ... }fires the moment aclick_idbecomes active, from any source (deep-link?click_id, register-click, Play Install Referrer, iOS/match) — no polling needed. If a click_id already exists when the handler is set, it is invoked immediately (once, asynchronously) with the current value. The same value never fires twice in a row; a different new value fires again. Delivery is async (microtask) and never runs inside SDK state updates. Optional and backwards compatible — readingclickIdstill works.
- New attribution callback:
-
0.1.607 Aug 2026Release notes
Open source →- Deep-link
unique_keyis now the last non-empty path segment, matching the backend/:appSlug?/:uniqueKeyroute (multi-app/slug/keylinks; single-segment links are unchanged). - Link-host acceptance now also matches the configured
baseUrlhost, plus an optionalconfigure(extraLinkHosts: [...])list (equal or.suffixmatch, trimmed and lowercased). Existingconfigurecalls are unchanged. - Sticky click_id fix: an existing click_id no longer blocks register-click for
a new link tap — the new id unconditionally becomes active and joins the
chain. An expired (7-day TTL) chain now also clears the persisted scalar
click_id. - register-click failures are classified: 4xx (except 408/429) is permanent — the pending request is cleared (unblocking the Android Install Referrer fallback); 5xx/408/429/network errors keep it for retry. Pending is cleared with compare-and-clear so an in-flight response never wipes a newer tap, and an in-flight guard prevents duplicate register-click POSTs.
track()retries a pending register-click even when a click_id already exists.- Postbacks now treat HTTP 408/429 as retryable (queued) instead of permanent.
- Deep-link
-
0.1.514 Jul 2026Release notes
Open source →Matches published pub.dev adsparkle_flutter 0.1.5. configure(linkDomainSuffix:) optional (default .go.adsparkle.co, backend LINK_DOMAIN_SUFFIX parity); install_referrer/match_client/register_client deferred attribution; Android plugin.
Co-Authored-By: Claude Opus 4.8 [email protected]
Release notes
Open source →configure()now accepts an optionallinkDomainSuffix(default.go.adsparkle.co) so test/prod deployments can use different link domains, mirroring the backendLINK_DOMAIN_SUFFIXenv. Existing calls are unchanged.- Deferred attribution: Play Install Referrer capture, probabilistic
/match, and register-click for app-installed universal-link opens.
-
0.1.402 Jul 2026Release notes
Open source →- Rebrand: package description, docs and license now reference AdSparkle (formerly "Viralif / AdBird"). No code changes.
-
0.1.302 Jul 2026Release notes
Open source →- Accept company custom-event shortIds (e.g.
YE2YFSQ) aseventType— the fixed 7-event allowlist was relaxed to the backend format^[A-Za-z0-9_]{1,64}$. Built-in typed helpers are unchanged. AdSparkleEvent.eventTypeis now the raw wire string, so queued custom events survive persistence and offline replay.- Documented
productIds/customParamssupport (product-scoped campaigns).
- Accept company custom-event shortIds (e.g.
-
0.1.219 Jun 2026Release notes
Open source →- Default API base URL is now
https://api.adsparkle.co(wasapi.viralif.co). - Aligned with the Web/RN/Android/iOS SDK family.
- Default API base URL is now
-
0.1.016 Jun 2026Release notes
Open source →Initial release.
- Singleton
AdSparkle.instancepublic API. configure(),setUserId(),setClickId(),handleDeepLink().track()plus typed helpers:trackInstall,trackSignUp,trackLogin,trackDownload,trackPurchase,trackSubscription,trackRefund.- Deep link
click_idextraction from URI query parameters. - Click chain persistence (de-duplicated, max 10 entries).
- Postback delivery to
POST {baseUrl}/api/tracking/postbackwithX-Company-Keyauth (publishableco_key; no secret/HMAC). - Exponential backoff retry (3 attempts) on 5xx / network errors.
- Persisted pending queue (
shared_preferences) flushed on the nextconfigure()/track().
- Singleton