Skip to main content

We built a checkout so you don’t have to

Launch a branded, conversion-optimized signup for the German energy market. Our hosted checkout handles address validation, supplier search, IBAN, plausibility checks, and accessibility. Customers land on a per-plan subdomain derived from plans.slug, fill out the form, and get redirected back to you once Nomos creates the subscription.
Hosted checkout page with plan summary on the left and signup form on the right

Example: a plan with slug lumio is reachable at lumio.checkout.energy, themed to your organization

Pre-fill query parameters

Pass through anything you already know about the customer and the form arrives pre-filled.
https://lumio.checkout.energy/?zip=10115&usage=3500

Attach metadata

Anything you pass as metadata on the checkout link is stored on the subscription’s metadata once the customer submits the form. Use it to tie the signup back to your own records: a user ID, a campaign, an installer, a referral code. There are two ways to pass it, and you can combine them.
Add one metadata.<key> param per value. Values arrive as strings.
The dotted link above produces a subscription with this metadata:
When the same key is set more than once, the more specific source wins:
  1. Metadata on the lead referenced by id.
  2. Dotted metadata.<key> params.
  3. The JSON metadata param.
Metadata survives the landing page: if the link has no zip or id, the customer first enters their postal code on the start page, and the metadata carries over to the form. Webhook payloads carry IDs only, so read it back with Retrieve a subscription after subscription.created fires.
metadata.email is reserved for attribution. Besides being stored in metadata, it sets credited_to on the subscription to the rep or partner who brought in the customer.
Metadata is visible in the URL and can be edited by the customer before submitting. Don’t put secrets in it, and don’t trust it for anything that grants money or access without checking it on your side.

Redirect after submission

By default, Nomos shows a branded confirmation page once the form is submitted.
Confirmation screen reading 'Erfolgreich abgeschlossen' with a three-step list of what happens next

Default confirmation page, themed to your organization

Three URLs on the plan control where the customer can navigate. Set them in the plan settings in the dashboard. With redirect_url set, the customer lands on your page with the subscription ID appended, for example https://example.com/thanks?subscription=sub_mi4f0oda6x9m7gcsvjk0ole1, and never sees the confirmation page. confirmation_back_url then has no effect.

React on your backend

Subscriptions originating from hosted checkout are tagged with source: "checkout", so you can distinguish them when processing webhooks. Two events fire over the lifetime of a signup, separated in time:
  • subscription.created immediately, when the form is submitted. Use it to provision your own user record.
  • subscription.confirmed later, once the grid operator has accepted the switch. Use it for confirmation emails and to unlock portal access.
The supply start date isn’t in the payload: read start_at with Retrieve a subscription after each subscription.confirmed, since the event fires again when the date changes. Not every signup reaches supply:
  • If the grid operator or previous supplier rejects the switch, Nomos handles the rejection and the subscription stays pending. No event fires until the switch is confirmed.
  • If the customer withdraws before supply starts, subscription.terminated fires immediately, followed by subscription.ended once the end date has passed.

FAQ

Not yet. Plans live on {plan.slug}.checkout.energy. The subdomain reads your plan slug, applies your branding, and serves the form.
The form is fixed: address, supplier, household size, IBAN, marketing consent. To collect anything else, use Build your own where you control the entire UI.
Currently only German (default) in a formal (Sie) and informal (Du) setting.