[{"data":1,"prerenderedAt":182},["ShallowReactive",2],{"support-article-settings-email-domain-restrictions":3,"ls-connection":180},{"article":4,"related":33,"neighbors":113,"alternates":174},{"feature":5,"category":6,"locale":7,"slug":8,"title":9,"lede":10,"purpose":11,"steps":14,"notes":24,"generatedFrom":31,"updated":32},"email-domains","settings","en","email-domain-restrictions","Restrict which email domains can register","Allow only certain email domains to sign up, or block the ones you do not want, from the page’s access rules.",[12,13],"Email domain restrictions decide which email addresses may register at all. In allow mode only the domains you list get through, which turns a public page into an internal or partner-only one without a password to share. In block mode everyone gets through except the domains you list.","Use allow mode for an employees-only or customer-only session, and block mode to keep out free mailbox providers or a competitor, while the page itself stays public and indexable.",[15,17,19,22],{"text":16},"Open your page in the builder, on step 4 · Settings. “Email domain restrictions” sits in the same access rules as the password and the registration limit.",{"text":18},"Turn the switch on, then choose the mode: “Allow only these” to let nobody else register, or “Block these” to refuse just the domains you list.",{"text":20,"code":21},"Add the domains, one or several, such as acme.com. A wildcard is allowed: livestorm.* covers livestorm.co and livestorm.com, and *.acme.com covers sub.acme.com. The list reports how many domains it holds.","acme.com, livestorm.*, *.partner.com",{"text":23},"Publish. A visitor whose address does not pass reads “This email address can’t be used to register for this event.” and is not registered.",[25,26,27,28,29,30],"The rule is checked on the email address the visitor submits, so it applies to the form on your page and to an embedded form alike.","Matching is on the whole domain and ignores case: acme.com matches only acme.com, never sub.acme.com. Add *.acme.com for subdomains, and note that this pattern does NOT also cover the bare acme.com, so list both when you want each.","The refusal message never says which domains are allowed. Someone testing addresses learns nothing about your list.","An empty list turns the restriction off rather than refusing everyone, so clearing the field cannot accidentally close your page.","Up to 200 domains per page. Entries are lowercased and de-duplicated when saved.","With approval required as well, a request that fails the domain rule is declined with “This email domain is not allowed by access settings.” as its reason.","builder\u002Fsettings\u002FSettingsStep.vue (step 4) · lib\u002Fpublic-page\u002Fregistration-config.ts (domainFilterOf, emailDomainMatches) · i18n wizard.settings.domains.* + form.domainNotAllowed","September 9, 2026",[34,64,91],{"feature":35,"category":6,"locale":7,"slug":36,"title":37,"lede":38,"purpose":39,"steps":41,"notes":57,"generatedFrom":63,"updated":32},"page-access","access-and-privacy","Control access and privacy","Password-protect the page, set its visibility, redirect after registration, and cap sign-ups.",[40],"The Settings step gathers the page's access rules: who can find it (search-engine visibility), who can load it (password), where visitors go after they register, and how many people can sign up.",[42,45,48,51,54],{"text":43,"image":44},"Open your page in the builder, on step 4 · Settings. Each rule is its own block with its own switch.","\u002Fsupport\u002Fpage-access\u002Fen\u002Fstep-1.webp",{"text":46,"image":47},"In the visibility block, choose “Public” (crawlable and indexable by search engines) or “Unlisted” (hidden from search, reachable only via its direct link).","\u002Fsupport\u002Fpage-access\u002Fen\u002Fstep-2.webp",{"text":49,"image":50},"Turn on “Password protection” to require a password before the page loads, then enter it — at least 8 characters. The eye button reveals it.","\u002Fsupport\u002Fpage-access\u002Fen\u002Fstep-3.webp",{"text":52,"image":53},"Turn on “Redirect after registration” and enter a full https:\u002F\u002F URL to send registrants to your own page — or leave the switch off to show the in-page confirmation.","\u002Fsupport\u002Fpage-access\u002Fen\u002Fstep-4.webp",{"text":55,"image":56},"Turn on “Registration limit” to cap sign-ups: set the maximum with the slider or the field. Once the limit is reached, the page shows a “registration full” message instead of the form, unless you also turn on “Waiting list”, nested under the limit, which keeps the form open and queues whoever it would have turned away.","\u002Fsupport\u002Fpage-access\u002Fen\u002Fstep-5.webp",[58,59,60,61,62],"An unlisted page is still reachable by anyone with the link: it is not protection, only a way to keep it out of search engines.","The password must be at least 8 characters and the redirect URL must start with https:\u002F\u002F — otherwise publishing is blocked on the Launch step.","The “Waiting list” switch appears under the registration limit on free pages only, and is unavailable while registrant retention is set to “Don’t store”. See “Keep a waiting list when the page is full”.","The same card carries “Email domain restrictions”, which decides whose address may register at all. See “Restrict which email domains can register”.","These settings apply on publish: check them before taking the page live.","builder\u002Fsettings\u002FSettingsStep.vue (step 4) · builder\u002Fsettings\u002FRegistrationLimitSetting.vue · i18n wizard.settings.*",{"feature":65,"category":6,"locale":7,"slug":65,"title":66,"lede":67,"purpose":68,"steps":71,"notes":85,"generatedFrom":89,"updated":90},"api-keys","Create and revoke API keys","Issue workspace keys to call the Venue API from your own code — then revoke them when you no longer need them.",[69,70],"API keys let workspace admins authenticate to the Venue API with a Bearer token (`vk_live_…`). A key carries the same access as a workspace admin, so treat it like a password: create it when you need an integration, copy the secret once, and revoke it as soon as it is unused.","Endpoints, Try-it, and code samples live in the in-app API documentation (`\u002Fdocs`).",[72,75,79,81,83],{"text":73,"image":74},"Open Settings → API keys. Only workspace admins can manage keys.","\u002Fsupport\u002Fapi-keys\u002Fen\u002Fstep-1.webp",{"text":76,"image":77,"caption":78},"The list shows each key’s name, prefix (`vk_live_…`), dates, and status. Filter Active \u002F All to hide or show revoked and expired keys.","\u002Fsupport\u002Fapi-keys\u002Fen\u002Fstep-2.webp","Switch to All to see revoked or expired keys alongside active ones.",{"text":80},"Click “Create key”, give it a name (e.g. “Production integration”), pick an expiration (30 days, 90 days, 1 year, or never), then confirm.",{"text":82},"Copy the secret immediately — it is shown only once. Tick “I’ve saved this key somewhere safe” before closing. You can open “Try in API docs” to paste it into the docs Try-it panel (it stays in this browser only).",{"text":84},"To stop a key, click “Revoke” on its row and confirm. Any integration using that key stops working right away — this can’t be undone.",[86,87,88],"Never commit API keys to source control or share them in chat or tickets.","Expired keys stop working automatically; revoked keys stay in the All filter for audit.","Non-admins see the tab but cannot create or revoke keys — ask a workspace admin.","SettingsApiKeysTab.vue · useApiKeys.ts · i18n settings.apiKeys.*","July 21, 2026",{"feature":92,"category":6,"locale":7,"slug":92,"title":93,"lede":94,"purpose":95,"steps":98,"notes":108,"generatedFrom":112,"updated":32},"data-retention","Set how long registrant data is kept","Choose a retention window for the personal data collected through your pages — or keep none on Venue at all.",[96,97],"Registrant data retention controls how long the personal data your pages collect (a registrant’s email and their form answers) is kept on Venue. It is a single, workspace-wide setting: it applies to every page in the workspace, and only workspace admins can change it. A daily backend job permanently deletes anything older than the window you pick.","Use it to match your own privacy policy or a legal requirement — keep data as long as you need it, or store none of it on Venue and rely on Livestorm as the system of record.",[99,102,106],{"text":100,"image":101},"Open Settings → AI & privacy. Registrant data retention is the second card, below AI page generation.","\u002Fsupport\u002Fdata-retention\u002Fen\u002Fstep-1.webp",{"text":103,"image":104,"caption":105},"Open the “Keep registrant data for” dropdown and pick a window: Unlimited (the default), 2 years, 1 year, 6 months, or 3 months. The change saves as soon as you pick.","\u002Fsupport\u002Fdata-retention\u002Fen\u002Fstep-2.webp","Data older than the selected period is permanently deleted.",{"text":107},"To store no registrant personal data at all, choose “Don’t store on Venue” — only anonymized analytics counts are kept, and a warning explains what that means.",[109,110,111],"The setting is workspace-wide and admin-only: it applies to everyone, and members see it but can’t change it.","Data older than the window (email and form answers) is deleted permanently by a daily job — this can’t be undone, so shorten the window deliberately.","“Don’t store on Venue” keeps zero registrant personal data; only anonymized counts remain for analytics.","SettingsAiTab.vue · useWorkspace.ts setRegistrantRetention · i18n settings.workspace.retention.*",{"prev":114,"next":144},{"feature":115,"category":6,"locale":7,"slug":116,"title":117,"lede":118,"purpose":119,"steps":122,"notes":138,"generatedFrom":143,"updated":32},"registration-approval","require-approval","Require approval before registration","Hold free-page sign-ups for your review, then approve or decline them before anyone is registered for the event.",[120,121],"Require approval captures registrations on Venue first. Visitors submit the form as usual, see a pending confirmation, and wait until you decide. Only an approval registers them for the event.","Use it when the guest list must stay curated: invite-only webinars, partner events, or any free page where an automatic enroll is too open. Paid registration keeps its own path and never goes through this review.",[123,126,130,134],{"text":124,"image":125},"Open your page in the builder, on step 4 · Settings. The “Require approval” block sits below the access rules (free pages only).","\u002Fsupport\u002Fregistration-approval\u002Fen\u002Fstep-1.webp",{"text":127,"image":128,"caption":129},"Turn on “Require approval”. New sign-ups stay pending: nobody is registered for the event until you decide.","\u002Fsupport\u002Fregistration-approval\u002Fen\u002Fstep-2.webp","You cannot turn the setting off while anyone is still waiting on a decision.",{"text":131,"image":132,"caption":133},"Open the Registrants tab. Views of the same list sit side by side, each with its own count: Approved (everyone who is registered), Waiting while approval is on, and Declined beside it. Waiting is the one to watch, so you can see from the tab whether anyone needs you.","\u002Fsupport\u002Fregistration-approval\u002Fen\u002Fstep-3.webp","Every waiting row leads with its decision: Approve or Decline. Tick rows to decide a batch at once.",{"text":135,"image":136,"caption":137},"Declined keeps your past decisions and says why each request ended there. Move back to Waiting puts one in front of you again, and approving it from there runs the usual checks as if it had just arrived.","\u002Fsupport\u002Fregistration-approval\u002Fen\u002Fstep-4.webp","Declining tells the visitor nothing and blocks nobody: the same person can register again and comes back to Waiting.",[139,140,141,142],"Approve one runs the same registration path as a normal free sign-up, including capacity and sessions, and enrolls the visitor on the page’s event platform when the event comes from a connector. Bulk approve runs in the background and shows progress on the Registrants tab.","A request the event platform rejects can be retried up to five times. Past that, Discard is its only exit, and it lands in Declined with the failure that stopped it.","Changing the linked event moves waiting and failed requests to Declined, marked with that reason: those submissions were captured for the previous event. Move one back to Waiting to decide it against the new event.","Unavailable while registrant retention is “Don’t store on Venue”: Venue needs a place to keep the pending form answers.","builder\u002Fsettings\u002FSettingsStep.vue · pages\u002F[id]\u002Fregistrants.vue · pages\u002FRegistrantsViewSwitcher.vue · pages\u002FApprovalWaitingTable.vue · pages\u002FApprovalDeclinedTable.vue · i18n wizard.settings.approval.* + registrants.*",{"feature":145,"category":6,"locale":7,"slug":146,"title":147,"lede":148,"purpose":149,"steps":152,"notes":166,"generatedFrom":173,"updated":32},"waitlist","waiting-list","Keep a waiting list when the page is full","Once a capped page fills up, let visitors join a waiting list instead of being turned away, then promote them as seats free up.",[150,151],"A registration limit closes the form the moment it is reached: everyone who arrives after that sees a “registration full” message and leaves. The waiting list keeps the form open instead. Visitors past the cap sign up as usual, are told they are in line, and wait for you.","Use it whenever demand may outrun the seats you have: a capped webinar, a room with a fixed capacity, a session you might duplicate if enough people ask. You keep the names instead of losing them, and you decide who comes in when a seat frees up.",[153,155,158,160,164],{"text":154},"Open your page in the builder, on step 4 · Settings, and turn “Registration limit” on: the waiting list is a sub-option of the cap, so it only appears once the page is Limited. A page with no cap has nothing to wait for.",{"text":156,"image":157},"Turn on “Waiting list”, nested under the limit controls. Free pages only: a paid page keeps its own pay-then-register path and its “full” refusal.","\u002Fsupport\u002Fwaitlist\u002Fen\u002Fstep-1.webp",{"text":159},"Publish. Once the page is full, visitors see “This event is full. You’ll be added to the waiting list.” and the form’s button becomes “Join the waiting list”. After they submit, the page confirms that their place in line is saved and that you will email them if a seat frees up.",{"text":161,"image":162,"caption":163},"Open the Registrants tab. A “Waiting list” view sits beside Approved, and its header says how many people are in line and how many seats are free.","\u002Fsupport\u002Fwaitlist\u002Fen\u002Fstep-2.webp","Promote a single person, or exactly as many as you have seats for.",{"text":165},"Promote from that view: “Promote” on a single row, or “Promote next N” to fill exactly the seats you have, oldest request first. “Promote everyone” appears once the page no longer has a limit at all.",[167,168,169,170,171,172],"The list is first come, first served: promoting always works from the oldest request down, so nobody is overtaken by a later sign-up.","Promoting someone while the page is still full registers them beyond your limit, which is you overriding your own cap on purpose, and the view says so before you do it. The public form stays on the waiting list and keeps taking names.","A promotion runs the same registration path as a normal sign-up, including the event platform enroll. If your workspace’s own registration ceiling refuses it, that person stays in line untouched and a batch stops there rather than skipping ahead.","Removing someone from the list puts them in Declined, with a way back into line if you change your mind.","Unavailable while registrant retention is “Don’t store on Venue”: a place in line is only worth keeping if Venue can keep the form answers that go with it. Turning the list back off stays possible either way.","Lifting the registration limit entirely takes the switch away with it, and everyone still in line can then be promoted at once.","builder\u002Fsettings\u002FRegistrationLimitSetting.vue · pages\u002F[id]\u002Fregistrants.vue · pages\u002FRegistrantsViewSwitcher.vue · pages\u002FApprovalWaitingTable.vue · i18n wizard.settings.waitlist.* + registrants.waitlist* + form.waitlist*",[175,178],{"hreflang":176,"path":177},"fr","\u002Fsupport\u002Fparametres\u002Frestrictions-de-domaine-e-mail",{"hreflang":7,"path":179},"\u002Fsupport\u002Fsettings\u002Femail-domain-restrictions",{"connected":181},false,1788968383581]