Mission Control

Preflight

What is actually configured, read from real rows. Most of phase 0 happens in someone else's console; this refuses to let 'I think that is set up' stand in for the row existing.

Rails

  • Every rail account has a credential

    5 of 5 have no key: Futurebits Buffer A, Futurebits Buffer B, Futurebits Cal.com, Futurebits GA4, Futurebits Search Console.

    Control panel → Rail accounts. Paste each key; it encrypts on save.

  • No credential is expiring or failing

    0 stored, none at risk.

  • Every credential has passed a connection test

    No credentials stored yet.

    Control panel → Rail accounts.

Analytics

  • GA4 account has its property reference

    The account exists but has no property id recorded, so the snapshot job has nothing to query.

    Put the GA4 property id (properties/123456) in the account's external reference.

  • Search Console account has its property reference

    The account exists but has no site URL recorded, so the snapshot job has nothing to query.

    Put the Search Console site URL (sc-domain:example.com) in the account's external reference.

Email

  • Domain identity for go.futurebits.tech

    Verified for sending.

  • Easy DKIM

    SES reports DKIM SUCCESS with 3 tokens.

  • Custom MAIL FROM on bounce.go.futurebits.tech

    Set, status SUCCESS.

  • Production access

    Out of the sandbox. Quota 50000/day at 14/s, 0 sent in the last 24h.

  • Configuration set mission-control-futurebits

    Exists.

  • Event destination

    No event destination, so bounces and complaints never reach the control plane.

    Run npm run ses:setup -- --brand futurebits --apply

  • Topic policy for delivery events

    The topic policy does not let ses.amazonaws.com publish, so nothing will ever be delivered even though the subscription looks healthy.

    Run npm run ses:setup -- --brand futurebits --apply

  • SNS subscription for delivery events

    Nothing is subscribed to https://mission.futurebits.tech/api/webhooks/ses/futurebits.

    Bring the VPS up behind TLS, then run: npm run ses:setup -- --brand futurebits --apply

  • Topic policy for inbound replies

    The topic policy does not let ses.amazonaws.com publish, so nothing will ever be delivered even though the subscription looks healthy.

    Run npm run ses:setup -- --brand futurebits --apply

  • SNS subscription for inbound replies

    Nothing is subscribed to https://mission.futurebits.tech/api/webhooks/ses-inbound/futurebits.

    Bring the VPS up behind TLS, then run: npm run ses:setup -- --brand futurebits --apply

  • Inbound receipt rule

    No receipt rule set named mission-control-inbound.

    Run npm run ses:setup -- --brand futurebits --apply

  • DNS records

    All 8 records resolve.

  • Warmup ramp running for go.futurebits.tech

    Day 1 of 14 of the ramp: 5 sends allowed today.

Channels

  • Every rail channel resolves to an account

    5 rail channels.

  • Every rail channel has its vendor id

    5 have no external reference, so the publish job skips them: Delivery lead LinkedIn, Founder LinkedIn, Founder X, Futurebits company page, Outreach mailbox.

    Copy each channel id from Buffer into the channel's external reference.

People

  • The roster is real, not seeded examples

    2 of 2 are still seeded worked examples.

    Control panel → Teams and people. Editing a profile clears the example mark.

  • Every remit is usable

    2 remits.

Webhooks

  • Cal.com bookings has been heard from

    Never received a delivery.

    Point the Cal.com bookings webhook at this host and send a test event.

  • SES delivery events has been heard from

    Never received a delivery.

    Point the SES delivery events webhook at this host and send a test event.

  • SES inbound replies has been heard from

    Never received a delivery.

    Point the SES inbound replies webhook at this host and send a test event.

  • Telegram approvals has been heard from

    Never received a delivery.

    Point the Telegram approvals webhook at this host and send a test event.

Backups

  • Backups are configured

    MC_BACKUP_DIR is not set, so the nightly dump has nowhere to write.

    Set MC_BACKUP_DIR and mount it to something that is pushed offsite.

  • A restore drill has been done

    No restore drill recorded. A backup nobody has restored is a hope, not a backup.

    Restore the latest dump into a scratch database, confirm the row counts, then record it with `npm run ops:restore-drill`.

The same checks run from the command line with npm run preflight futurebits, which exits non-zero while anything is blocking.

Jump to

Search brands, flows, people and control panel sections