VEYNDO
Handbook
docs/app-tutorials/scheduled-review.mdView source ↗

English source · 4 min

Workshop 4 — A scheduled shop review reminder

Build a daily reminder with the native scheduler and graphical Flow Builder. The app emits a typed event at 08:00 UTC; a flow records an internal review note. Optional email/Slack delivery uses the existing configured connector apps. The schedule is not a browser timer or an automatically generated stock analysis.

Workshop setup and release steps · Installable scheduled example

Current app entry includes the Scheduled automation assistant

Current shared workspace, captured 2 November 2026. The linked earlier worked examples preserve their original field definitions and outcomes.

1. Create the scheduled contract

Open Developers → New app → Scheduled automation. Enter Daily shop review, technical ID tutorial_review, placement Own admin module, and cron 0 0 8 * * *. Leave MCP off. Choose Create editable draft.

Earlier worked example: Daily shop review assistant with its explicit UTC schedule

The six fields are seconds, minutes, hours, day, month, weekday. 0 0 8 * * * means 08:00 UTC daily. It does not track a country's daylight-saving time. The seconds field must be a single number. 0 */15 * * * * emits every fifteen minutes; 0 * * * * * emits once per minute for a disposable local test.

2. Inspect the event and enabled schedule

Under Connections → Automation contract, the generated schedule targets the declared emit action received. For this technical ID, the emitted event is app.tutorial_review.received. Changing the app ID changes this event name; use the actual installed ID in the Flow Builder.

Earlier worked example: The native schedule and event name in Connections

The equivalent contract fragment is:

{
  "schedules": [{
    "id": "recurring",
    "cron": "0 0 8 * * *",
    "action": "received",
    "input": {"payload": {}},
    "enabled": true
  }]
}

Keep the private data model for review notes. If changing schedule payloads through the coding agent, preserve the declared action input schema. The backend accepts at most eight schedules/app and commits a tick with its outbox event atomically.

3. Connect an explicit Flow action

Save/review/install the package. Open Connections → Open Flow Builder, or Rules & flows → Event flows. Create a flow listening to the actual app event. Add an Internal note action, such as Review products, low stock and today's orders. Save the flow with translated title/message through the shared content language selector. Do not make the received emit action recursively call itself.

flowchart LR
  S[Persisted UTC schedule] --> T[Transactional tick and outbox]
  T --> E[app.tutorial_review.received]
  E --> F[Saved graphical flow]
  F --> N[Internal review note]
  F -. optional .-> C[Configured Email or Slack app]

For a Slack extension, use the bundled Slack app and the existing Flow action with its configured target and consent; connector setup. For email, use the existing Email Delivery queue. Do not put SMTP calls, webhook secrets or a duplicate scheduler into the app Manifest.

4. Test the clock in the right environment

Design/F5/staging can inspect and validate the contract; private environments do not run schedules or external deliveries. For clock acceptance, publish to a disposable live local test shop, run the existing worker configuration, set the one-minute test expression and wait for a due tick. Inspect Flow executions for the saved internal note. Restart the owned test process and verify that the same due tick is not duplicated. Then restore 08:00 UTC or disable the schedule before leaving the test shop running.

A tick/event does not prove an external message arrived. If testing delivery, use a local provider fixture or your specifically approved test destination and inspect the actual provider result. Consumers are at-least-once; remote actions still require idempotency and explicit handling of unknown outcomes.

Ask the coding agent

Keep this app's existing received emit action and native UTC schedule. Set it to
08:00 UTC daily and add translated review-note labels. Keep data private, MCP
off and the same action schemas. Explain the emitted event name and how to bind
an Internal note flow. Do not create a browser timer, SMTP sender or second queue.
Keep all resources under the app package. Return a reviewed Manifest edit.

Ownership and regression evidence

The generated app's schedule/actions belong to its Manifest. The shared scheduler, outbox and Flow owners execute the contract. app_assistants verifies actual persisted ticks, private-stage suppression, replay and cold restart; automation and automation_lifecycle cover the native Flow path. The current screenshots show a configured draft, not a delivered daily notification.

Next: ERP handoff · All five workshops