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)
```

###  Alternatives

[bennettstone/magicmin

MagicMin is a PHP based javascript and stylesheet minification and merging class designed to generate minified, merged, and automatically updating files to simplify the process of minified file usage and updating when going between production and development environments.

495.4k](/packages/bennettstone-magicmin)

PHPackages © 2026

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