All Text

Release 0.15.0

Welcome to Zotonic 0.15.0, released on 4 April, 2016.

Release 0.16.0

Welcome to Zotonic 0.16.0, released on 2 May, 2016.

Release 0.17.0

Welcome to Zotonic 0.17.0, released on 6 June, 2016.

Release 0.18.0

Welcome to Zotonic 0.18.0, released on 4 July, 2016.

Release 0.19.0

Welcome to Zotonic 0.19.0, released on 1 August, 2016.

Release 0.20.0

Welcome to Zotonic 0.20.0, released on 5 September, 2016.

Release 0.21.0

Welcome to Zotonic 0.21.0, released on 3 October, 2016.

Release 0.22.0

Welcome to Zotonic 0.22.0, released on 7 November, 2016.

Release 0.23.0

Welcome to Zotonic 0.23.0, released on 5 December, 2016.

Release 0.24.0

Welcome to Zotonic 0.24.0, released on 2 January, 2017.

Release 0.25.0

Welcome to Zotonic 0.25.0, released on 6 February, 2017.

Release 0.26.0

Welcome to Zotonic 0.26.0, released on 6 March, 2017.

Release 0.27.0

Welcome to Zotonic 0.27.0, released on 3 April, 2017.

Release 0.30.0

Welcome to Zotonic 0.30.0, released on 3 July, 2017.

Release 0.32.0

Welcome to Zotonic 0.32.0, released on 4 September, 2017.

Release 0.33.0

Welcome to Zotonic 0.33.0, released on 2 October, 2017.

Release 0.34.0

Welcome to Zotonic 0.34.0, released on 6 November, 2017.

Release 0.36.0

Welcome to Zotonic 0.36.0, released on 5 February, 2018.

Release 0.38.0

Welcome to Zotonic 0.38.0, released on 2 April, 2018.

Release 0.40.0

Welcome to Zotonic 0.40.0, released on 4 June, 2018.

Release 0.43.0

Welcome to Zotonic 0.43.0, released on 19 December, 2018.

Release 0.44.0

Welcome to Zotonic 0.44.0, released on 18 January, 2019.

Release 0.45.0

Welcome to Zotonic 0.45.0, released on 29 January, 2019.

Release 0.46.0

Welcome to Zotonic 0.46.0, released on 15 February, 2019.

Release 0.47.0

Welcome to Zotonic 0.47.0, released on 4 March, 2019.

Release 0.48.0

Welcome to Zotonic 0.48.0, released on 9 April, 2019.

Release 0.48.1

Welcome to Zotonic 0.48.1, released on 12 April, 2019.

Release 0.49.1

Welcome to Zotonic 0.49.1, released on May 8, 2019.

Release 0.49.2

Welcome to Zotonic 0.49.2, released on May 15, 2019.

Release 0.50.0

Welcome to Zotonic 0.50.0, released on June 27, 2019.

Release 0.51.0

Welcome to Zotonic 0.51.0, released on August 26, 2019.

Release 0.51.1

Welcome to Zotonic 0.51.1, released on September 13, 2019.

Release 0.51.2

Welcome to Zotonic 0.51.2, released on September 26, 2019.

Release 0.52.0

Welcome to Zotonic 0.52.0, released on November 6, 2019.

Release 0.53.0

Welcome to Zotonic 0.53.0, released on December 10, 2019.

Release 0.54.0

Welcome to Zotonic 0.54.0, released on February 4, 2020.

Release 0.55.0

Welcome to Zotonic 0.55.0, released on March 12, 2020.

Release 0.55.1

Welcome to Zotonic 0.55.1, released on March 16, 2020.

Release 0.56.0

Welcome to Zotonic 0.56.0, released on April 23, 2020.

Release 0.57.1

Welcome to Zotonic 0.57.1, released on May 19, 2020.

Release Notes

Every time a Zotonic release is made, we create a document which lists the most important changes. This page contains…

Contributing to Zotonic

We encourage contributions to Zotonic from the community! This chapter describes how you can help improve Zotonic.


So you have built your Zotonic site, and now you want to show it to the world. This page tells you how to configure…


Zotonic uses Logger for logging. Logger metadata is automatically set by Zotonic in the controller functions.

Command-line shell

The Zotonic shell gives you access to a running Zotonic instance with its code and data.


Using the query search API you can retrieve lists of resources in various ways. In your templates, you do so through…


Including Zotonic icons CSS Add the CSS file to your template:


This is the Zotonic Developer Guide. It takes you through all aspects of Zotonic so you can start building your own…

Developer Guide

The technical handbook for developers building websites with Zotonic. It guides you through all aspects of the…


Action which starts a manual backup.




Fetch the tail of a list.


This action sends a message to the event handler on the server.

Release 0.49.0

Welcome to Zotonic 0.49.0, released on May 6, 2019.


Broadcast some file changed, used for livereload by mod_development


Return a breadcrumb navigation trail for the given id.


Get the subtree of an id in a menu (if any).


Flattens the rsc menu structure for use in a template loop.

Release 0.12.4

Released on 2015-02-20 14:19 by arjan.


Set CORS headers on the HTTP response.

Release 0.28.0

Welcome to Zotonic 0.28.0, released on 1 May, 2017.


Not yet documented.


Joins the elements of a list. Joins the elements of the input list together, separated by the argument.


Splits the filter value into a list of values.

Creating sites

Initialize your site with a proper data model and some resources through manage_schema .

Release 0.8.0

Welcome Zotonic 0.8.0, released on April 11, 2012. These are the changes for Zotonic release 0.8.0. The most important…


Renders a template on the server and opens a full screen overlay with the HTML output of the template.


Closes a dialog. When there is no dialog open then nothing happens.


Renders a template on the server and opens a dialog with the HTML output of the template.


Opens a dialog with a predefined HTML content and title.


Counts the total of all points that can be received for all test questions. Non test questions are not counted.


Check if there is a ‘stop’ question in list of (survey) blocks


Determine if any answer of a question was wrong. Used for showing results of thurstone test questions.


Determine if any answer of a question was correct. Used for showing results of thurstone test questions.


survey_answer_split survey_any_correct_answer survey_any_wrong_answer survey_as_pages survey_is_stop survey_is_submit…

Release 0.35.0

Welcome to Zotonic 0.35.0, released on 4 December, 2017.

Just enough Erlang shell

An indispensible tool for both learning and programming Erlang.

Just Enough Regular Expressions (in Erlang)

Learn how to manipulate string data with the re module.

Just enough Postgres

Understand the primary data-store of Zotonic.

Restore/upgrade content db from backup

Contributed by: Scott Finnie

Reset a user’s password

Emergency password reset when you can’t get into the admin interface.

Activate/deactivate modules

Rescuing a dysfunctional site from the Zotonic shell.

Automatically add new users to a user group

Why When you create a person, you usually need to add it to a user group as well. You may want to automate this, in…

Admin template specific things

Common markup in admin templates.

Customizing the layout of the admin edit page

Why After having created a custom widget (see Creating a custom widget on the edit page), we want to hide widgets that…

Creating a custom widget on the edit page

Why For an imaginary webshop edit page, we want to add 2 more data fields: the affiliate URL and a note about free…

Dynamic select options using a wired template

Why Suppose you want to wire a change event for a select box to update a another select box, i.e. you want to wire the…

Site-specific signup actions

Performing additional, project-specific actions when a user signs up

Managing redirection after login and signup

Configure mod_signup to redirect to something other than a member’s home page.

Customizing the sign up and sign in form

You want to change parts of the form, or change its appearance.

Share variable binding across blocks

How to avoid having to call the same query inside several blocks of the same page

Retrieving the category of a page

Getting the category from a URL is somewhat involved, but not impossible. This is an example of what you can do with…

Page-specific dynamic backgrounds

Use edges ( page connections ) to associate backgrounds with pages.

Updating form field from a dialog

Ever wanted to update a form field from a dialog, possibly giving the user some list to choose from? Here’s how to do…

How to add a custom Content Block

Zotonic comes with a number of standard content blocks: Header, Text and Embed page. Additional content blocks are…

Implementing a simple contact form

This tutorial teaches you to create a form, validate it, submit it over Ajax and e-mail the results back to you.