PHPackages                             xodigital/formerly - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. xodigital/formerly

ActiveCraft-plugin[Utility &amp; Helpers](/categories/utility)

xodigital/formerly
==================

Craft Plugin that allows users to build their own forms and view form submissions

582.1k23[32 issues](https://github.com/xodigital/Formerly/issues)[3 PRs](https://github.com/xodigital/Formerly/pulls)PHP

Since Jul 17Pushed 7y ago6 watchersCompare

[ Source](https://github.com/xodigital/Formerly)[ Packagist](https://packagist.org/packages/xodigital/formerly)[ RSS](/packages/xodigital-formerly/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (3)DependenciesVersions (1)Used By (0)

Formerly
========

[](#formerly)

Installing
----------

[](#installing)

1. Copy the `formerly` directory into your `craft/plugins` directory
2. Browse to Settings &gt; Plugins in the Craft CP
3. Click on the Install button next to Formerly

Setting up forms
----------------

[](#setting-up-forms)

Users (both admin and client) can easily create forms in the Formerly admin section, under the Forms tab. A form consists of:

- A name, used as the title of the form that a visitor to the site may see
- A handle, used to programatically refer to this form
- Several emails that will be sent upon the submission of a form by a visitor
- Several questions which make up the form

Outputting the form
-------------------

[](#outputting-the-form)

A form can be rendered using, e,g.

```
{% set form = craft.formerly.form('handle') %}
{% include 'form.html' with { form: form } %}
```

Where `form.html` is Twig code that iterates through the form's questions, creating form markup. An example `form.html` is provided with the source code for this plugin.

You can also obtain a form instance by having a content editor select a form using the Formerly field type, e.g.

```
{% include 'form.html' with { form: entry.form } %}
```

Viewing submissions
-------------------

[](#viewing-submissions)

Form submissions are a Craft Element, which means that you can query them using regular `ElementCriteriaModel`s. For example, to list submissions to the `competition` form who have selected Australia as their country:

```
{% set submissions = craft.formerly.submissions('competition')
  .country('Australia')
  .sort('dateCreated desc') %}
{% for submission in submissions %}
  Name: {{ submission.formhandle_name }}
  Email: {{ submission.formhandle_email }}
  {# ... #}
{% endfor %}
```

Subscribe to Mailchimp Lists
----------------------------

[](#subscribe-to-mailchimp-lists)

This function allows for subscribers to be directly subscribed to your mailchimp list.

1. When adding a form, switch `ON` the Mailchimp toggle.
2. Enter your Mailchimp username - used to sign in to mailchimp
3. Enter your Mailchimp [API key](http://kb.mailchimp.com/integrations/api-integrations/about-api-keys)
4. Enter your Mailchimp [List Id](http://kb.mailchimp.com/lists/manage-contacts/find-your-list-id)
5. For each question, if you have a [Custom Merge Tag](http://kb.mailchimp.com/merge-tags/getting-started-with-merge-tags) set in Mailchimp, you must add it under `Mailchimp Merge Tag`

Each submission will then be added to the list in Mailchimp

Todo
----

[](#todo)

- Better validation
- More question attributes, e.g. placeholder, error messages

###  Health Score

27

—

LowBetter than 49% of packages

Maintenance9

Infrequent updates — may be unmaintained

Popularity31

Limited adoption so far

Community21

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor2

2 contributors hold 50%+ of commits

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

### Community

Maintainers

![](https://www.gravatar.com/avatar/04ddf43439e2702d16ecc37c34cefa2037a0b434ad421847c3164869b7e8aa52?d=identicon)[wiso1234](/maintainers/wiso1234)

---

Top Contributors

[![b8ne](https://avatars.githubusercontent.com/u/19263633?v=4)](https://github.com/b8ne "b8ne (8 commits)")[![wiso1234](https://avatars.githubusercontent.com/u/9454425?v=4)](https://github.com/wiso1234 "wiso1234 (7 commits)")[![mnoack](https://avatars.githubusercontent.com/u/35966?v=4)](https://github.com/mnoack "mnoack (3 commits)")[![noisysocks](https://avatars.githubusercontent.com/u/612155?v=4)](https://github.com/noisysocks "noisysocks (2 commits)")[![jeremyworboys](https://avatars.githubusercontent.com/u/988173?v=4)](https://github.com/jeremyworboys "jeremyworboys (1 commits)")[![samstevens](https://avatars.githubusercontent.com/u/4434133?v=4)](https://github.com/samstevens "samstevens (1 commits)")[![devoth](https://avatars.githubusercontent.com/u/26900808?v=4)](https://github.com/devoth "devoth (1 commits)")

### Embed Badge

![Health badge](/badges/xodigital-formerly/health.svg)

```
[![Health](https://phpackages.com/badges/xodigital-formerly/health.svg)](https://phpackages.com/packages/xodigital-formerly)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
