Plugins & Integrations
Synaplan is more than a chat platform — it's a base you can extend. Plugins add whole new workflows inside the app (marketing campaigns, document merging, voice output), and cloud integrations connect Synaplan to where your files already live (Nextcloud, OpenCloud).
Everything here is open source and self-hostable. The two flagship plugins — Synaads and Synaform — are maintained by the Synaplan team and live in their own public repositories.
How plugins work, in one sentence: drop a plugin into the
plugins/folder, run a one-line install command, and it appears in the Synaplan sidebar — no changes to Synaplan's core code. The developer details are at the bottom of this page.
At a glance
| Plugin | What it does for you | Status | Repository |
|---|---|---|---|
| Synaads | Turn one campaign brief into landing pages, Google Ads, ad copy, and social media graphics | Available | metadist/Synaads |
| Synaform | Extract data from uploaded files and auto-fill your Word templates | Available | metadist/Synaform |
| TTS | Read AI answers aloud with a natural voice | Available | metadist/synaplan-tts |
| Synasort | Sort and classify large local document folders with AI | Experimental (consulting only) | Coming end of 2026 |
| Cloud integration | What it does for you | Repository |
|---|---|---|
| Nextcloud | Use your Nextcloud files as a knowledge base for AI chat | metadist/synaplan-nextcloud |
| OpenCloud | Same, for the OpenCloud / ownCloud Infinite Scale ecosystem | metadist/synaplan-opencloud |
Synaads — AI marketing campaigns
Repository: github.com/metadist/Synaads
Describe a product or offer once, and Synaads builds the marketing material around it. From a single campaign brief it can generate:
- Landing pages — ready-to-publish, multilingual HTML pages with SEO metadata and a publishable public URL.
- Google Ads plans — keyword lists, negative keywords, and ad groups, exportable for Google Ads Editor.
- Ad copy — wording tailored to Google, LinkedIn, Facebook, and Instagram.
- Social graphics & video — images for LinkedIn/Instagram and short promo clips.
- Built-in compliance — automatic cookie consent, privacy-policy, and imprint checks so pages are GDPR-ready before they go live.
- One-click export — download the whole campaign (pages, media, keywords, ad data) as a ZIP.
Who it's for: marketers and small teams who want a complete first draft of a campaign in minutes instead of days, then refine it by hand.
For developers — installing & API
Synaads installs like any Synaplan plugin (full steps in the plugin architecture section below):
git clone https://github.com/metadist/Synaads.git
cp -r Synaads/synaads-plugin /path/to/synaplan/plugins/synaads
cd /path/to/synaplan
docker compose exec backend php bin/console cache:clear
docker compose exec backend php bin/console app:plugin:install <userId> synaads
Open Plugins → SynaAds in the sidebar, or visit /plugins/synaads.
All endpoints live under /api/v1/user/{userId}/plugins/synaads/. Key routes:
| Method | Path | Description |
|---|---|---|
POST |
/plan |
AI-generate a campaign plan from an idea |
GET/POST |
/campaigns |
List or create campaigns |
POST |
/campaigns/{id}/generate |
Generate the landing page |
POST |
/campaigns/{id}/generate-ad-copy |
Generate platform-specific ad copy |
POST |
/campaigns/{id}/generate-keywords |
Generate a keyword list |
POST |
/campaigns/{id}/generate-image · /generate-video |
Generate marketing media |
POST |
/campaigns/{id}/pages/{language}/publish |
Publish a page at a public slug |
GET |
/campaigns/{id}/compliance |
Quick GDPR compliance check |
GET |
/campaigns/{id}/download |
Download the campaign as a ZIP |
Per-user settings (brand name, accent color, CTA URL, privacy/imprint URLs, Google Tag Manager and Ads conversion IDs) are configured in the plugin's Settings tab. See the Synaads README for the full route list and config reference.
Synaform — fill Word templates with AI
Repository: github.com/metadist/Synaform
Synaform turns any repeatable "collect data → fill a document" task into a reusable
Collection. You define the fields you need, upload your Word templates with
{{placeholders}}, and let the AI read source files (PDFs, documents, even a web URL) to
fill them in.
It was originally built for an HR team turning candidate CVs and interview notes into standardised profile documents — but it fits any workflow where several inputs become one templated output: customer onboarding, incident reports, intake forms, case files, and more.
How it flows:
- Create a Collection — give it a purpose and language.
- Define variables — list the fields you need (or let AI import them from a pasted definition).
- Upload Word templates —
.docxfiles using{{variable}}placeholders; Synaform auto-detects them. - Add datasets — upload the source documents for each real case; the AI extracts the rest, with an optional second-pass "LLM-as-judge" accuracy review.
- Generate & export — produce a filled
.docxper case, and bulk-export every dataset as CSV.
The interface ships in English, German, Spanish, and Turkish.
Who it's for: any team doing the same "read these files, fill this document" job over and over and wanting to stop copy-pasting.
For developers — installing & API
git clone https://github.com/metadist/Synaform.git
cp -r Synaform/synaform-plugin /path/to/synaplan/plugins/synaform
cd /path/to/synaplan
docker compose exec backend php bin/console cache:clear
docker compose exec backend php bin/console app:plugin:install <userId> synaform
Open Plugins → Synaform in the sidebar, or visit /plugins/synaform.
Endpoints live under /api/v1/user/{userId}/plugins/synaform/. In the backend the
resources keep their original names — forms are Collections and candidates are
datasets:
| Area | Endpoints | Description |
|---|---|---|
| Forms (Collections) | GET/POST/PUT/DELETE /forms |
Variables, language, attached templates |
| Candidates (Datasets) | GET/POST/PUT/DELETE /candidates |
One record per real case |
| Sources | POST /candidates/{id}/upload-cv · /upload-doc · /urls |
Attach PDFs, docs, or a web URL |
| Extraction | POST /candidates/{id}/extract |
Run AI extraction over the sources |
| Templates | GET/POST/DELETE /templates |
Upload .docx; AI can suggest variables from a draft |
| Generation | POST /candidates/{id}/generate/{templateId} |
Produce the filled document |
| Downloads | GET /candidates/{id}/documents/{docId}/download · /pdf |
Download DOCX or rendered PDF |
The full route list, template-authoring guide, and config options are in the Synaform README.
TTS — Text-to-Speech
Repository: github.com/metadist/synaplan-tts
Adds a natural-sounding voice to AI responses. It's an optional companion service — Synaplan runs perfectly without it, and switches voice output on automatically when it detects the service.
For developers — running the service
git clone https://github.com/metadist/synaplan-tts.git
cd synaplan-tts
docker compose up -d
Synaplan auto-detects the service via SYNAPLAN_TTS_URL (default
http://host.docker.internal:10200). Prefer a cloud voice? Set ELEVENLABS_API_KEY to
use ElevenLabs instead of the local Piper engine.
Synasort — AI document sorting (experimental)
Status: Synasort is an experimental plugin. Right now it is offered through consulting engagements only and is not yet a general release. A public release is planned for end of 2026.
Synasort watches a local folder, reads each document, and automatically files it into the right categories — extracting useful metadata like amounts, dates, and parties along the way. Think of it as an AI assistant for the piles of PDFs and scans that would otherwise need manual sorting.
It combines fast local rules (regex on filenames) with Synaplan's AI for anything the rules can't confidently classify, and a full-file analysis fallback for tricky documents.
Interested? Synasort is currently delivered as part of a consulting engagement while we harden it for general availability. Get in touch if you'd like to pilot it before the public release.
Cloud Storage Integrations
Connect Synaplan to the files you already store in a self-hosted cloud, so they become searchable knowledge sources for AI chat. Both integrations run through the same OCR and text-extraction pipeline as the rest of the platform, and re-index automatically when files change.
Nextcloud
Repository: github.com/metadist/synaplan-nextcloud
Bring Synaplan's RAG, translations, and summaries to your Nextcloud — run your own AI platform right next to your Nextcloud instance.
What you get:
- Index documents from specific Nextcloud folders
- Automatic re-indexing when files are added or changed
- Full text extraction (PDF, Word, Excel, images with OCR)
- Per-user connections secured with Nextcloud app passwords
Setup (overview):
- In Nextcloud, create an App Password under Settings → Security.
- In Synaplan's admin panel, add the Nextcloud connection (server URL + app password).
- Pick the folders to index — they become knowledge sources in AI chats.
OpenCloud (ownCloud Infinite Scale)
Repository: github.com/metadist/synaplan-opencloud
Full support for the OpenCloud / oCIS WebDAV and Graph API for teams on the ownCloud ecosystem.
What you get:
- WebDAV and Graph API support for file access
- Spaces-aware document indexing
- Automatic sync and re-indexing
- The same text-extraction and RAG pipeline as the Nextcloud integration
Setup (overview):
- Generate an API token or app password in your OpenCloud instance.
- Configure the connection in Synaplan's admin panel.
- Select the spaces and folders to index.
For developers: the plugin architecture
Synaplan uses a non-invasive plugin architecture with automatic discovery. Plugins
are self-contained under plugins/{name}/, store data in generic shared tables, and
expose their own API endpoints — no modifications to Synaplan's core code are required.
How auto-discovery works
- Boot —
Kernel::getPlugins()scansplugins/*/manifest.jsonfor plugin metadata. - Autoloading — PSR-4 mapping is registered (e.g.
Plugin\SynaAds\*→plugins/synaads/backend/*). - Services — every class under
backend/is autowired into Symfony's DI container. - Routes — controller attributes in
backend/Controller/are auto-imported. - Per-user gate — every API call checks
BCONFIG {group}.enabled = 1for the requesting user.
Plugin structure
my-plugin/
├── manifest.json # Metadata, capabilities, routes, config schema
├── backend/
│ ├── Controller/ # API endpoints (Symfony controllers)
│ └── Service/ # Business logic
├── frontend/ # Plugin UI (vanilla JS or Vue)
└── migrations/
└── 001_setup.sql # Per-user config setup (BCONFIG entries)
Key rules
- No custom database tables — use
BCONFIGfor key-value config (groupP_{pluginName}) and the genericplugin_datatable for structured data viaPluginDataService. - No core code changes — plugins are fully self-contained under
plugins/{name}/. - API namespacing — all endpoints live under
/api/v1/user/{userId}/plugins/{name}/.... - Reuse core services — use Synaplan's
AiFacade,ModelConfigService,PluginDataService, etc. through dependency injection.
manifest.json example
{
"id": "my-plugin",
"name": "my-plugin",
"namespace": "Plugin\\MyPlugin",
"version": "1.0.0",
"displayName": "My Plugin",
"description": "Short description of what the plugin does",
"author": "Your Name",
"capabilities": ["api", "frontend", "migrations"],
"config": { "group": "P_myplugin" }
}
Installing a plugin
# Copy the plugin directory into Synaplan
cp -r my-plugin/ /path/to/synaplan/plugins/my-plugin/
# Clear the Symfony cache so the new plugin is discovered
docker compose exec backend php bin/console cache:clear
# Install for a specific user (use the user's ID, e.g. 1 for the first admin)
docker compose exec backend php bin/console app:plugin:install <userId> my-plugin
To enable a plugin for all verified users, or automatically for new users, see the
app:plugin:install-verified-users command and the DEFAULT_USER_PLUGINS env variable
documented in the Synaads README.
Related Repositories
| Repository | Description | Link |
|---|---|---|
| synaplan | Main platform (backend + frontend + widget) | github.com/metadist/synaplan |
| Synaads | AI marketing campaign plugin | github.com/metadist/Synaads |
| Synaform | AI document-merge plugin | github.com/metadist/Synaform |
| synaplan-tts | Text-to-Speech voice service | github.com/metadist/synaplan-tts |
| synaplan-nextcloud | Nextcloud integration | github.com/metadist/synaplan-nextcloud |
| synaplan-opencloud | OpenCloud / oCIS integration | github.com/metadist/synaplan-opencloud |
| Synamail | Outlook add-in | github.com/metadist/Synamail |
| synaplan-charts | Helm charts for Kubernetes | github.com/metadist/synaplan-charts |
See all open repositories at github.com/orgs/metadist/repositories.