← All stories

BRANCH · ef-097-zapier-app

Zapier EventFarm app publication

EF-097Persona: OrganizerRoots in: event-setupMatrix: Absent gap probe

A public Zapier app should authenticate EventFarm/Voyage accounts, expose trigger definitions, manage versions, and pass Zapier review/publish lifecycle. The matrix marks this absent, so the story is a gap probe. Tier-3 tightening: Zapier app authorization now references ui-oauth-connection-card for the OAuth-style connection UX.

Happy path / Lifecycle

  1. Open Zapier app settings.

    Organizer sees app publication status, auth test status, version, and review state.

  2. Connect Zapier through OAuth.

    Zapier auth validates account access and returns sample account metadata.

  3. Publish version.

    Version management shows draft, review, approved, and published states with audit evidence.

Failure modes

OAuth refresh

Expired app token refreshes and retries Zapier auth test.

Rate limit

Zapier review API 429 backs off with jitter.

Webhook replay

Review callback replay is idempotent.

Schema drift

Unknown Zapier app review fields are ignored.

Missing credential

Missing client credentials show friendly re-auth/setup copy.

Sandbox isolation

Mock fixture cannot publish or read production Zapier app data.

Audit row

Every auth test or publish attempt writes an audit row.

Partial rollback

Failed publish rolls back version state or shows per-step outcomes.

Review rejection

Zapier review errors are shown with field-level remediation.

Version collision

Concurrent version publish resolves with conflict UI.

Sample payload missing

Publication blocks until each trigger has sample payload.

Parity gap

Gap panel remains until public Zapier app publication exists.

Stable test attributes

Visibility teeth. Publication state, review errors, and gap marker must be visible.

data-testWherePurpose
zapier-app-panelZapier settingsmain surface
zapier-auth-test-ctaZapier settingsauth test
zapier-app-status-pillZapier settingspublication status
zapier-version-tableZapier settingsversions
zapier-review-error-panelZapier settingsreview errors
zapier-publish-ctaZapier settingspublish action
zapier-app-gap-panelZapier settingsabsent gap marker

Agent test plan

- zapier-app-opens
- zapier-auth-test
- oauth-refresh-on-expired-token
- rate-limit-backoff
- webhook-replay-idempotent
- schema-drift-degrades-gracefully
- missing-credential-graceful-error
- sandbox-vs-prod-isolation
- audit-log-row-per-sync
- partial-import-rollback
- zapier-review-rejection
- zapier-version-collision
- zapier-sample-payload-required
- zapier-app-gap-probe