How the demo embeds Webform inside APB, Pathauto SKIP vs CREATE, and the Links-field 500.

APB-DOCS-WEBFORM

APB 2.1.0 has no form parent. The demo adds a site module apb_webform: paragraph type webform_embed plus the token filter [apb-webform:id] on apb_full_html. That is a demo-site pattern, not a product component. Editors on a client site do not get a Webform button unless that site adds the same field. See also Webform component page.

Embedding

  • webform_embed in the host field uses the entity-reference formatter with source_entity. APB preprocess ignores it (bundle is not apb_pb_*), so placement JS does not move it. The form posts back to the current node URL. Confirmation is inline so embeds stay on the APB URL.
  • [apb-webform:form_id] in simple content, tabs, and accordion is replaced during filtering. Duplicate tokens of the same form on one URL can collide on HTML ids.
  • Standalone route is hyphenated: /form/apb-request-briefing is 200; underscore /form/apb_request_briefing 404s. Those aliases are Webform’s, not Pathauto’s.
  • Overlay JSON is not a form render context. The lab uses an iframe to /form/{id} instead.

APB Links cannot target Webform or Contact URLs

ContentLanguageUrl::entityUrl() calls isTranslatable() on whatever entity a canonical route loads. Webform and ContactForm have canonical templates but are not ContentEntityBase, so Links and Feature box fields pointed at /form/… or /contact/request_a_demo 500 the page. Workaround: a node alias, a webform_node, an iframe src, or a raw HTML <a> in simple content. Product fix is a TranslatableInterface check in apbuilder.

Pathauto

Pathauto ships with the distribution. Lab and commercial scripts keep PathautoState::SKIP on stable URLs. update_action is do-nothing so saving a SKIP node cannot delete its alias. A probe page on the demo uses CREATE (/webform-pathauto-probe). Do not let Pathauto rewrite frozen gallery or documentation aliases.

Other limits

  • Webform labels follow interface language. On the demo, interface stays English for recordings, so a Spanish APB page still shows English form chrome even when a Spanish config override exists.
  • Email handlers on the public demo are configured but status=false.
  • A Webform cannot live inside a simple-content column as a nested parent. Token-in-HTML and Internal Placement are the only ways to put a form next to a layout column.

Live lab: demo.apb.aero.net/forms.