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:

  1. Create a Collection — give it a purpose and language.
  2. Define variables — list the fields you need (or let AI import them from a pasted definition).
  3. Upload Word templates.docx files using {{variable}} placeholders; Synaform auto-detects them.
  4. 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.
  5. Generate & export — produce a filled .docx per 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):

  1. In Nextcloud, create an App Password under Settings → Security.
  2. In Synaplan's admin panel, add the Nextcloud connection (server URL + app password).
  3. 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):

  1. Generate an API token or app password in your OpenCloud instance.
  2. Configure the connection in Synaplan's admin panel.
  3. 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

  1. BootKernel::getPlugins() scans plugins/*/manifest.json for plugin metadata.
  2. Autoloading — PSR-4 mapping is registered (e.g. Plugin\SynaAds\*plugins/synaads/backend/*).
  3. Services — every class under backend/ is autowired into Symfony's DI container.
  4. Routes — controller attributes in backend/Controller/ are auto-imported.
  5. Per-user gate — every API call checks BCONFIG {group}.enabled = 1 for 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 BCONFIG for key-value config (group P_{pluginName}) and the generic plugin_data table for structured data via PluginDataService.
  • 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.