# Developers: add video experiences to an existing product in one sprint

A developer can add Genuin to a web or mobile product in one sprint: loader, placements, auto login, events, and a webhook, with staging on the sandbox key and production on the live key.

## Sprint plan

| Day | Work | Reference |
| --- | --- | --- |
| 1 | Create account, verify domains and bundle IDs, get sandbox key (see [Create your Business Account on Brand Control Center (BCC)](https://begenuin.com/developers/get-started/any-business/create-business-account-bcc) and [Connect your website, app, and podcast feed](https://begenuin.com/developers/get-started/any-business/connect-properties)) | [REST API: authentication and keys](https://begenuin.com/developers/get-started/any-business/rest-api-authentication-and-keys) |
| 2 | Register page types and placements on the grid; export CSV for the team (see [Register your placements on the Hierarchical Grid](https://begenuin.com/developers/get-started/any-business/register-placements)) | [The Hierarchical Grid: one spine for inventory, layout, and reporting](https://begenuin.com/developers/get-started/any-business/the-hierarchical-grid-one-spine-for-inventory-layout-and-reporting), [Player card sizes and IAB footprint spec](https://begenuin.com/developers/get-started/any-business/player-card-sizes-and-iab-footprint-spec) |
| 3 | Launch the hub; install loader or package; render one feed per template; pass context (see [Launch your first community: your owned-and-operated space](https://begenuin.com/developers/get-started/any-business/launch-first-community)) | [Web SDK: install and configure](https://begenuin.com/developers/get-started/any-business/web-sdk-install-and-configure), [Mobile SDKs: iOS, Android, React Native, and Flutter](https://begenuin.com/developers/get-started/any-business/mobile-sdks-ios-android-react-native-and-flutter), [Embed configuration reference](https://begenuin.com/developers/get-started/any-business/embed-configuration-reference) |
| 4 | Auto login: signing key, token minting, identify (see [Bring your audience in with auto login and SSO](https://begenuin.com/developers/get-started/any-business/auto-login-sso)) | [Auto login and token exchange](https://begenuin.com/developers/get-started/any-business/auto-login-and-token-exchange) |
| 5 | Events to your analytics; track conversions from checkout | [Web SDK: install and configure](https://begenuin.com/developers/get-started/any-business/web-sdk-install-and-configure), [Attribution: closed-loop commerce and conversion forecasts](https://begenuin.com/developers/get-started/any-business/attribution-closed-loop-commerce-and-conversion-forecasts) |
| 6 | Webhooks for video.published and conversion.attributed into your pipeline | [Webhooks and events](https://begenuin.com/developers/get-started/any-business/webhooks-and-events) |
| 7 | Scheduled export of engagement by placement into the warehouse | [Receive engagement events in your own analytics](https://begenuin.com/developers/get-started/any-business/receive-engagement-events-in-your-own-analytics) |
| 8 | Switch to the live key issued at launch; sandbox stays for staging (see [Launch your first community: your owned-and-operated space](https://begenuin.com/developers/get-started/any-business/launch-first-community)) | [Support, status, and SLAs](https://begenuin.com/developers/get-started/any-business/support-status-and-slas) |

## Non-functional checklist

- Reserve the card footprint to avoid layout shift (see [Player card sizes and IAB footprint spec](https://begenuin.com/developers/get-started/any-business/player-card-sizes-and-iab-footprint-spec)).
- Lazy rendering is on by default; set `data-genuin-lazy="false"` only above the fold (see [Embed configuration reference](https://begenuin.com/developers/get-started/any-business/embed-configuration-reference)).
- Consent: `consent: auto` reads your CMP; test `denied` renders without personalization (see [Privacy and VPPA: the two-channel data flow](https://begenuin.com/developers/get-started/any-business/privacy-and-vppa-the-two-channel-data-flow)).
- Keys live in environment variables; rotate under Settings → Developers (see [REST API: authentication and keys](https://begenuin.com/developers/get-started/any-business/rest-api-authentication-and-keys)).

## How it runs

This playbook runs as a sequence of proposals, one per step, ordered for your company type; you confirm each one and the 30-day outcome is reported against the plan.

**Support.** Help is available 24/7 from Brand Control Center and from every page of these docs. Ask in plain language; when a person is needed, an account manager, developer, or Ops engineer joins the same thread and stays on it until it is resolved. Every Business Account owner has this on every plan (see [24/7 Octo support: how Octo brings in account managers, developers, and Ops](https://begenuin.com/developers/get-started/any-business/24-7-octo-support-how-octo-brings-in-account-managers-developers-and-ops)).

## API & SDK

Access: the calls in the table are the proposed Business Account API (see [Business Account API: provisioning, OAuth, and the resource map](https://begenuin.com/developers/get-started/any-business/business-account-api-provisioning-oauth-and-the-resource-map)), authenticated with a key scoped to the account and a role or an OAuth client acting for it; every confirmation in this article becomes a proposal you can approve by API (`POST /proposals/{proposalId}:approve`). Live today, the server API under `/api/thirdparty` authenticates with a `gn-access-token` (see [Generate an access token](https://begenuin.com/developers/developer-resources/api/generate-access-token-using-authentication-api)), and [Live API today and the Business Account API roadmap](https://begenuin.com/developers/developer-resources/guides/live-api-today-and-the-business-account-api-roadmap) maps what is live to what is proposed.

| Call | Purpose |
| --- | --- |
| POST /accounts/{accountId}/keys | Issue a key with a role scope (sandbox or live) |
| GET /sdk/config | Runtime configuration the Web and mobile SDKs fetch on init (placements, experiences, kit) |
| GET /placements/{placementId}/embed | Embed snippet for the placement (Web SDK attributes pre-filled) |
| POST /sessions | Auto login token exchange: your signed user token for a Genuin session |
| POST /accounts/{accountId}/webhooks | Subscribe to events (proposal.created, placement.published, member.subscribed, revenue.posted, moderation.flagged, …) |

```js
// proposed server SDK (Business Account API)
import { Genuin } from '@genuin/sdk';
const genuin = new Genuin({ apiKey: process.env.GENUIN_KEY });
await genuin.keys.create(accountId, { env: 'live', role: 'developer' });
await genuin.placements.embed(placementId);
```

Live today: [Generate an access token](https://begenuin.com/developers/developer-resources/api/generate-access-token-using-authentication-api) · [Environments, credentials, and test data](https://begenuin.com/developers/developer-resources/guides/environments-credentials-and-test-data) · [Embed the Genuin Web SDK on your website](https://begenuin.com/developers/developer-resources/sdk/how-do-you-embed-and-configure-the-genuin-web-sdk-on-your-website) · [Integrate the Genuin iOS SDK](https://begenuin.com/developers/developer-resources/sdk/developer/genuin-sdk/native-compatibility/ios/how-to-integrate-and-power-your-brand-community-in-ios-apps).

SDKs: Web SDK (see [Embed the Genuin Web SDK on your website](https://begenuin.com/developers/developer-resources/sdk/how-do-you-embed-and-configure-the-genuin-web-sdk-on-your-website)), iOS SDK (see [Integrate the Genuin iOS SDK](https://begenuin.com/developers/developer-resources/sdk/developer/genuin-sdk/native-compatibility/ios/how-to-integrate-and-power-your-brand-community-in-ios-apps)), Android SDK (see [Integrate the Genuin Android SDK](https://begenuin.com/developers/developer-resources/sdk/how-to-integrate-and-power-your-brand-community-in-android-apps)), React Native (see [Integrate the Genuin SDK with React Native apps](https://begenuin.com/developers/developer-resources/sdk/how-do-you-integrate-the-genuin-react-native-sdk-into-your-application)), and Flutter (see [Integrate the Genuin SDK with Flutter apps](https://begenuin.com/developers/developer-resources/sdk/how-do-you-integrate-the-genuin-flutter-sdk-into-your-application)) render Genuin and sign members in; the Node (`@genuin/sdk`) and Python (`genuin`) server SDKs are proposed with [Business Account API: provisioning, OAuth, and the resource map](https://begenuin.com/developers/get-started/any-business/business-account-api-provisioning-oauth-and-the-resource-map).
