Recent changes
Wednesday November 04 2026
-
Shared hosting or a small server Updated Markdown page
Where one person's Exponential site should run - shared hosting with Apache or LiteSpeed and the setup wizard, a small virtual server with Velocity or PHP-FPM, or a machine at home - what works where according to the…
-
What exists and what does not Updated Markdown page
A plain feature map for individuals - what ships with Exponential for personal sites, portfolios, blogs, family sites and club sites, what needs an optional extension, what needs an outside service, and what does not…
-
Your personal site for free Updated Markdown page
A blog, a family site or a hobby site on GitHub Pages at no cost - write in Exponential on your own computer, publish a static copy, and keep every version.
-
AI providers, the job queue and MCP Updated Markdown page
What Exponential offers for connecting AI providers and background work - expai (Exponential Intelligence) with Anthropic, OpenAI-compatible services and local models, expqueue as a job queue for integrations, the…
-
Building an integration as an extension Updated Markdown page
Packaging an integration as an Exponential extension - the directory layout of a typical integration, settings with secrets kept in settings/override, classes, commands, cronjob parts, workflow events, schema, tests…
-
Bulk data exchange with xrowextract Updated Markdown page
Using the xrowextract extension as a file-based integration - exports of one or many classes as CSV, JSON or XML, imports with a dry run, content packages, schedules with delta runs, delivery to SFTP, FTP, S3, WebDAV or…
-
Caching after imports Updated Markdown page
Which caches an import or a sync touches and which it does not - what the publish operation clears on its own, when to clear more, the cache ids of ezcache.php, the HTTP cache and Velocity's response cache, caches after…
-
Choosing an integration surface Updated Markdown page
A decision guide for picking the right surface for each data flow - where the code runs, how much data moves, how fast it must arrive, and which surfaces fit - with worked decisions for common jobs.
-
Choosing credentials for an integration Updated Markdown page
The credentials Exponential accepts from other systems - OAuth 2.0 tokens, personal API keys, expservices tokens, HTTP basic authentication, session sign-in - what each is for, how it is limited, and how to store and…
-
CLI scripts and ezexec for integrations Updated Markdown page
Running integration code on the Exponential server from the command line - quick scripts with bin/php/ezexec.php, proper commands with eZScript in your extension, how the console finds them, siteaccess and user, exit…
-
Contributing integrations back Updated Markdown page
What integrators can give back to Exponential and why it pays - fixes found while integrating, generic connectors as public extensions, documentation of an integration pattern - how to separate generic from customer…
-
Cronjobs for integrations Updated Markdown page
Scheduling integration work with Exponential's cronjob parts - a part of your own, the script as a class, the crontab line per siteaccess, locking against overlapping runs, pausing a part during maintenance, and…
-
Error handling and logging in integrations Updated Markdown page
How an integration should fail, retry and leave a trace in Exponential - classes of errors, retries and dead letters, transactions, eZDebug and eZLog, the log files under var/log, error references, the log viewer and…
-
Estimating integration work Updated Markdown page
How to estimate an integration with Exponential - breaking it into flows and work items, the factors that drive effort (surface, volume, data quality, the other system's API, identity, testing, operations), a worksheet…
-
Event listeners for integrations Updated Markdown page
Reacting to kernel events with ezpEvent listeners - which events are useful to an integration (caches cleared, object states, notifications, sessions), attaching a listener in settings, a CDN purge example, the…
-
ezjscore server functions for integrations Updated Markdown page
When a small JSON endpoint of your own is the right integration surface, how to write one as an ezjscore server function, how to protect it with the ezjscore/call policy and the form token, and when to use expservices…
-
Forms and collected information Updated Markdown page
Getting form answers, polls and lead forms out of Exponential into a CRM or another system - how information collection works, collect.ini, the CSV export and bccie, reading new collections from PHP in a cronjob, mail…
-
Handover of an integration Updated Markdown page
Handing an integration over to the people who will operate it - the handover package (code, documentation, runbook, monitoring, credentials inventory), the runbook's sections, transferring credentials safely, training…
-
Idempotent imports keyed by remote_id Updated Markdown page
Making imports safe to run any number of times - the remote_id of objects and nodes, a naming scheme for keys, the create-or-update function with change detection, handling records removed at the source, and what to do…
-
Integration discovery worksheet Updated Markdown page
A worksheet to fill in with the customer at the start of an integration project - the installation, the systems around it, every data flow with direction, timing, volume, keys and owners, identity, constraints, and the…