ConClár Sync
ConClár Sync turns your Drupal site into the sync back end for ConClár, a conference-schedule progressive web app. Attendees use the checkboxes on the programme page to build a personal schedule, and this module lets that selection follow them from device to device by storing it against their own Drupal account — no separate accounts or extra sign-up system to run.
Features
- Implements ConClár's documented sync protocol exactly: the
/profileauth-state check, the login/logout handshake, andGET/PATCHon/apps/{app_id}/selections. - Attendees log in with your site's own Drupal login page (or any other login mechanism your site already uses, since the login entry point is configurable rather than hard-coded to
/user/login). - Selections are stored per Drupal user, scoped by ConClár's
app_id, in a dedicated database table rather than the genericuser.dataservice. - Because of that dedicated table, you can also export anonymized aggregate counts - "how many people marked this session as a favorite" - as a report page, a CSV download, or a Drush command, with no per-user identity ever included.
- Handles the CORS and cross-subdomain cookie requirements a cross-origin single-page app like ConClár needs, scoped only to this module's own routes, not a blanket, site-wide CORS policy.
- An optional
conclar_sync_flagsubmodule reflects selections as Flag entities instead, for sites that already use Flag and would rather selections double as flaggings on real content.
Post-Installation
After installing, visit Configuration > Web services > ConClár Sync settings (/admin/config/services/conclar-sync, permission: Administer ConClár Sync settings) to:
- Enter the origin(s) your ConClár deployment is served from. This one list drives the CORS headers, the CSRF check on
PATCHrequests, and validation of the return URL ConClár supplies on login/logout - never enter*. - Optionally change Login path or URL if attendees should log in somewhere other than
/user/login. - Optionally set a default return URL, used only if ConClár doesn't supply a valid one.
If ConClár is served from a different subdomain than your Drupal site (the expected setup for a protocol built around a cross-origin single-page app), you will also need to make the session cookie usable cross-subdomain by overriding session.storage.options.cookie_samesite to None in your site's services.yml. This is a site-wide change - see the module's README for the exact configuration and what it affects before turning it on.
Finally, point ConClár's own configuration at this site: set its SYNC.API_URL to this module's base path, e.g. https://your-site.example.com/conclar-sync.
If you want the anonymized aggregate reports, grant the View ConClár Sync selection reports permission to whichever role should see /admin/reports/conclar-sync/<app_id>.
Additional Requirements
Nothing beyond Drupal core for the base module. What actually exercises these endpoints is a running ConClár deployment (a separate, non-Drupal React app) configured to point at your site as described above.
The optional conclar_sync_flag submodule additionally requires the Flag module.
Recommended modules/libraries
- Flag — enables the optional
conclar_sync_flagsubmodule. - Event Platform ConClár - if your schedule data itself comes from Drupal content, this handles the separate job of exporting session/speaker data as the JSON ConClár's programme pages read. This module has no dependency on it and only handles the sync/login side.
Similar projects
There is no other Drupal module implementing this specific protocol at the time of writing. ConClár ships its own minimal example Node.js sync server for reference, and sites are of course free to run that instead - this module exists for sites that would rather reuse their existing Drupal user accounts as the identity and storage layer, without standing up and maintaining a separate service.
Supporting this Module
There is no funding page for this module at present. The most useful support right now is testing it against a real ConClár deployment and filing issues in the project's issue queue.
Community Documentation
See the module's README.md for full configuration details, including the exact cross-subdomain cookie and CORS setup, and the conclar_sync_flag submodule's own README.md for the trade-offs of Flag-backed storage. ConClár's own docs/sync_server_api.md documents the protocol this module implements, and is the authoritative reference if the two ever disagree.
Depends on
Dependencies of the latest stable release
No dependencies recorded for this project.
Required by
Tracked projects that depend on this one
No tracked projects depend on this one yet.
Activity
Releases
| Version | Type | Core | Notes | Release date | |
|---|---|---|---|---|---|
| 1.0.0-beta1 | Pre-release | 10–11 | First beta release — feature-complete, seeking feedback ahead of a stable 1.0.0. | Sep 19, 2026 | |
| 1.0.x-dev | Dev | 10–11 | 1.0.x-dev development release | Sep 19, 2026 |