|
1 | 1 | <img src="https://raw.githubusercontent.com/4site-interactive-studios/engrid/main/reference-materials/repo/repo-hero.jpg"> |
2 | 2 |
|
3 | | -# 4Site's ENgrid Page Template Framework |
4 | | - |
5 | | -<!--- <img align="right" width="200" height="200" src="https://engagingnetworks.academy/wp-content/uploads/2019/09/D-D-Partner.png"> --> |
6 | | - |
7 | | -This project started as a labor of love for our clients and ourselves. Originating in 2017 as a partnership between Engaging Networks and 4Site Studios to create the first freely available page templates for their platform, we created our first resuable Engaging Networks Page Template. That project was incredibly successful, and those templates are still used today for all new Engaging Networks clients. They're easy for junior developers and code dabblers to ease into, and they included Internet Explorer 11 support. |
8 | | - |
9 | | -Since then, we've continued to enhance and refine our work, culminating in a complete re-write in late 2019 that was named "ENgrid". Using today's latest web technologies, Webpack, Typescript, ES6, SCSS, and CSS Grids, we've created a new framework for marketers, fundraisers, and everyone in between that will ensure your pages stand out and deliver the performance you're looking for. |
10 | | - |
11 | | -Designed and Developed by [4Site Studios](https://www.4sitestudios.com/engaging-networks/?ms=github) while working with: |
12 | | - |
13 | | -1. American Technion Society (ATS) - Launching Q4, 2025- Amnesty International USA (AIUSA) |
14 | | -2. Catholic Extension |
15 | | -3. Center for Science in Public Interest (CSPI) |
16 | | -4. Earth Island Institute |
17 | | -5. Engaging Networks - Free & Flexible templates |
18 | | -6. Evangelical Lutheran Church in America (ELCA) - Launching Q4, 2025 |
19 | | -7. Food and Water Watch (FWW) |
20 | | -8. Friends of Canadian Broadcasting |
21 | | -9. Human Rights Campaign (HRC) via Lautman Maska Neill & Company |
22 | | -10. International Fund for Animal Welfare (IFAW) |
23 | | -11. Just Liberty |
24 | | -12. Mercy for Animals |
25 | | -13. National Parks Conservation Association (NPCA) via Avalon Consulting |
26 | | -14. National Trust for Historic Preservation (NTHP) via Avalon Consulting |
27 | | -15. National Wildlife Federation (NWF) |
28 | | -16. Oceana |
29 | | -17. Ocean Conservancy |
30 | | -18. Organic Consumers |
31 | | -19. Oxfam America |
32 | | -20. Oxfam Canada |
33 | | -21. People for the Ethical Treatment of Animals (PETA) |
34 | | -22. Polaris Project |
35 | | -23. Rainforest Action Network (RAN) |
36 | | -24. Saint Anthony's Guild (Friar Works) |
37 | | -25. Save the Children Action Network (SCAN) |
38 | | -26. Save Tibet via Schultz and Williams |
39 | | -27. Shatterproof |
40 | | -28. SPCA International (SPCAI) - Launching Q4, 2025 |
41 | | -29. The Nature Conservancy (TNC) |
42 | | -30. Turtle Island Restoration Network |
43 | | -31. Van Andel Institute |
44 | | -32. World Wildlife Fund (WWF) |
45 | | - |
46 | | -## ENgrid Features |
| 3 | +# ENgrid — Page Template Framework for Engaging Networks |
| 4 | + |
| 5 | +[](https://www.npmjs.com/package/@4site/engrid-scripts) |
| 6 | +[](https://www.npmjs.com/package/@4site/engrid-styles) |
| 7 | +[](https://github.com/4site-interactive-studios/engrid/blob/main/LICENSE) |
| 8 | + |
| 9 | +ENgrid is an open-source page template framework built by [4Site Studios](https://www.4sitestudios.com/engaging-networks/?ms=github) for [Engaging Networks](https://www.engagingnetworks.net/). It provides mobile-first, accessible, conversion-optimized page templates for donation, advocacy, e-card, event, survey, premium, and other EN page types — with features that go well beyond what Engaging Networks offers out of the box. |
| 10 | + |
| 11 | +## Why ENgrid? |
| 12 | + |
| 13 | +- **Conversion-focused** — Smart donation amount handling, upsell lightboxes, live giving variables, and dozens of enhancements designed to increase completion rates and average gift size |
| 14 | +- **Accessible by default** — Skip links, ARIA attributes, keyboard focus management, and autocomplete attributes are applied automatically to help meet WCAG standards |
| 15 | +- **Content editor friendly** — All on-page content is editable through the EN page builder. Background images, layouts, click-to-expand sections, conditional content, media attribution, and more — all without developer involvement |
| 16 | +- **Developer extensible** — Built with TypeScript, SCSS, and Webpack. Per-client GitHub repos, 30+ body data attributes, sub-brand theming, a debug panel, and 35+ helper functions |
| 17 | +- **Fast** — Single CSS and JS file, prefetched render-critical assets, lazy loaded images — the fastest page load times possible on Engaging Networks |
| 18 | +- **Open source** — Released under [The Unlicense](https://github.com/4site-interactive-studios/engrid/blob/main/LICENSE). All code is published on GitHub with full release notes documenting every change |
| 19 | + |
| 20 | +## Features |
47 | 21 |
|
48 | 22 | ### Giving Pages |
49 | | -- Comma and non-number handling in Other Donation Amount input field |
50 | | -- Automatically change the Credit Card Expiration Year Field Options to include the current year and the next 19 years, removing past years |
| 23 | +- Smart donation amount handling (strips commas, non-numeric characters) |
| 24 | +- Auto-updated credit card expiration year options |
51 | 25 | - Full VGS support with custom styling and error handling |
52 | | -- Tip Jar / Additional Gift Checkbox that works in addition to ENs native processing fee checkbox |
53 | | -- Donation Upsell Lightbox, an alternative to EN's native upsell lightbox that can be further customized |
54 | | -- Conditional Hide/Show fields (e.g., In Honor of Giving Fields) |
55 | | -- Give by Check, Card, Paypal, Apple Pay, Google Pay, and Venmo (Depends on Payment processor support) |
56 | | -- Auto-update CC Expiration Date fields |
57 | | -- Insert the currently selected giving amount and frequency anywhere on the page with our "Live giving variables" that act like live merge tags |
58 | | -- CVV "What's this" tooltip |
59 | | -- Conditionally hide/show content based on giving amount |
60 | | -- Conditionally hide/show content based on giving frequency |
61 | | -- Conditionally hide/show content based on the selected value of another radio or checkbox input |
62 | | -- Optional "Remember Me" to save and pre-fill supporter info. Works cross-domain/sub-domain |
63 | | -- More customizations for the Currency Selector, with the ability to change the amount buttons based on the selected currency |
64 | | -- |
65 | | - |
66 | | -### Advocacy Pages |
67 | | -- Advocacy "Opt-in Upsell" Lightbox |
68 | | -- Title field "Why is this required?" tooltip for Email to Senate target actions |
69 | | - |
70 | | -### e-Card Pages |
71 | | -- Tweaked UI / UX for an improved e-card "add recipient" experience |
72 | | - |
73 | | -### Accessibility Enhancements |
74 | | -- Skip content link accessibility enhancement |
75 | | -- Accessible outlines around fields when you navigate to them with your keyboard |
| 26 | +- Tip Jar / Processing Fee checkbox |
| 27 | +- Donation Upsell Lightbox with customizable one-time to recurring upsells |
| 28 | +- Conditional hide/show fields (e.g., In Honor/Memorial giving) |
| 29 | +- Card, Check, PayPal, Apple Pay, Google Pay, Venmo, and DAF support (varies by payment processor) |
| 30 | +- Live giving variables — insert the selected amount and frequency anywhere on the page |
| 31 | +- CVV "What's this?" tooltip |
| 32 | +- Conditional content based on giving amount, frequency, or any selected radio/checkbox value |
| 33 | +- Remember Me — save and pre-fill supporter info across visits, cross-domain/subdomain |
| 34 | +- Enhanced currency selector with per-currency amount buttons |
| 35 | +- Premium gift displays with multiple themes |
| 36 | +- Post-donation donation embed for follow-up gifts on the thank you page |
| 37 | + |
| 38 | +### Advocacy & e-Card |
| 39 | +- Advocacy opt-in upsell lightbox |
| 40 | +- Title field "Why is this required?" tooltip for Email-to-Senate actions |
| 41 | +- Improved e-card recipient UX |
| 42 | +- Ecard-to-target for sending ecards to advocacy targets |
| 43 | + |
| 44 | +### Accessibility |
| 45 | +- Skip to main content link for keyboard navigation |
| 46 | +- Accessible outlines around fields when navigating by keyboard |
76 | 47 | - Optional accessible drop-down menu |
77 | | -- Automatically add the autocomplete attribute to the most common input elements |
78 | | -- Automatically add the aria-required attribute to required fields |
79 | | -- Automatically add the aria-labelledby attribute to input fields with labels |
80 | | -- Automatically add the aria-label attribute to the other amount input field & split selets |
81 | | - |
82 | | -### Improvements for Content Editors |
83 | | -- All on-page content is editable; nothing hard coded into the page template |
84 | | -- Per Page Background Images and Videos! |
85 | | -- Per Page Layouts (Six Built-In) |
86 | | -- Click-to-expand content sections can be opened with a click, touch, or by pressing "enter" or "spacebar" when focused with a keyboard. |
87 | | -- Add an attribution overlay to images and videos to include the photographer's name, no more editing in Photoshop and hard coding it in. You can also optionally add a link |
88 | | -- All pages using our page template can be seamlessly embedded in your website with Shortcodes using our WordPress iFrame embed plugin or our custom script |
89 | | -- Inside page builder, hidden and conditional content is visually color-coded |
90 | | -- Easy to add classes for visually hiding labels/fields while keeping in line with accessibility best practices |
91 | | -- Easy to add classes for conditionally showing / hiding content based on gift amount (e.g., .showifamount-greaterthanorequalto-15) |
92 | | -- Easy to add classes for conditionally showing / hiding content based on the selected value of another radio or checkbox input |
93 | | -- Page template allows for default Facebook / Twitter social sharing meta tags with support for EN's per-page social sharing widget to override them |
94 | | -- ENgrid content editor documentation |
95 | | -- Support for custom merge tags in the page content, that can be replaced with dynamic values passed in the URL |
96 | | -- Adjust an ecard form to target a specific recipient, defined in a code block |
97 | | -- Ability to embed an ecard form into Donation/Advocacy pages |
98 | | -- Easily get redirected to the page builder from any page by adding `?pbedit` to the URL |
99 | | - |
100 | | -### Improvements for Developers |
101 | | -- 30+ data attributes added to the body tag for more control over the styling and functionality of the page |
102 | | -- Each client project gets its own GitHub repo containing all source code and assets |
103 | | -- Works with all page types (e.g., Donation, Premium, e-Card, Email to Target, Event, etc.). We add coverage when any new page type or display scenario comes up. |
104 | | -- Supports themes "Sub-Brand" theming and alternative brand theming for the ultimate setup and A/B testing scenario |
| 48 | +- Automatic `autocomplete` attributes on common input fields |
| 49 | +- Automatic `aria-required` on required fields |
| 50 | +- Automatic `aria-labelledby` on input fields with labels |
| 51 | +- Automatic `aria-label` on Other Amount input and split selects |
| 52 | + |
| 53 | +### Content Editor Capabilities |
| 54 | +- All on-page content editable through the EN page builder — nothing hard-coded |
| 55 | +- Per-page background images and videos |
| 56 | +- Six built-in page layouts |
| 57 | +- Click-to-expand content sections (click, touch, or keyboard accessible) |
| 58 | +- Media attribution overlays for photographer/artist credits with optional links |
| 59 | +- Seamless WordPress embedding via the Promotions Plugin or shortcodes |
| 60 | +- Color-coded hidden and conditional content inside the page builder |
| 61 | +- Easy classes for visually hiding labels while maintaining accessibility |
| 62 | +- Simple CSS classes for conditional show/hide by amount, frequency, or selection |
| 63 | +- Default social sharing meta tags with per-page override support |
| 64 | +- Custom merge tags replaced with dynamic values from URL parameters |
| 65 | +- Ecard form embedding into donation/advocacy pages |
| 66 | +- Quick edit shortcut — add `?pbedit` to any page URL to jump to the page builder |
| 67 | + |
| 68 | +### Developer Capabilities |
| 69 | +- 30+ data attributes on the `<body>` tag for granular styling and functional control |
| 70 | +- Per-client GitHub repos with all source code and assets |
| 71 | +- Works with all EN page types — donation, premium, e-card, email-to-target, event, survey, and more |
| 72 | +- Sub-brand theming and A/B testing support |
105 | 73 | - Optional placeholder values in input fields |
106 | | -- Address Form Field Internationalization - If the user is on a US / English page and selects "France" as their country, the Address Form fields will update their labels, change their ordering, and hide/show relevant fields for French Address formatting. Current address formatting support for (United States, Canada, United Kingdom, France, Germany, Netherlands, and Australia). |
107 | | -- Hidden fields become visible when the debug mode is enabled |
108 | | -- Debug panel that allows you to quick-fill form fields, change theme layouts, force form submission, and give you a shortcut to the EN page builder |
109 | | -- Abstract class with more than 35 helper functions that tackle common EN tasks like getting/setting field values, |
110 | | -- ENgrid developer documentation |
111 | | - |
112 | | -### General Quality of Life Improvements |
113 | | -- Added data attributes to form fields to help improve browser/password manager auto-fill completions |
114 | | -- On page load auto select the users country based on IP address |
115 | | -- Capitalize the first letter of First Name, Last Name, Address 1, City, and Region fields on the form submit |
116 | | -- Lazy Load all image assets and moves them to their own CPU thread to prevent slowdowns in rendering the page when they include high-resolution imagery |
117 | | -- Fastest page load times possible on Engaging Networks. All render critical assets are prefetched, and there is only a single CSS and JS file |
118 | | -- Optional IE11 pop-up encouraging users to upgrade their browsers |
119 | | -- Auto push events about page type, field interactions, and actions to Google Tag Manager |
120 | | - |
121 | | -### TidyContct Paid Services integrated with ENgrid |
122 | | -- TidyContact Address: Format all US addresses to the CASSI address standard in real-time on form submission |
123 | | -- TidyContact Phone: Format mobile numbers to the Twilio E.164 format in real-time on form submission |
124 | | -- TidyContact Email: Validate email addresses in real-time before the form is submitted |
125 | | -- TidyContact QuickFill: "Remember Me" to save and pre-fill supporter info. Works cross-domain/sub-domain |
| 74 | +- International address formatting — fields update labels, ordering, and visibility based on selected country (US, CA, UK, FR, DE, NL, AU) |
| 75 | +- Debug panel for quick-filling forms, changing layouts, forcing submissions, and shortcuts to the page builder |
| 76 | +- 35+ helper functions for common EN tasks (getting/setting field values, etc.) |
| 77 | + |
| 78 | +### Quality of Life |
| 79 | +- Exit intent lightbox to capture abandoning visitors |
| 80 | +- Enhanced browser and password manager autofill via data attributes |
| 81 | +- IP-based country auto-detection on page load |
| 82 | +- Auto-capitalization of First Name, Last Name, Address, City, and Region |
| 83 | +- Lazy loading with off-thread image rendering for high-resolution imagery |
| 84 | +- Single CSS + JS file with prefetched render-critical assets for fastest EN page loads |
| 85 | +- Automatic GTM Data Layer events for page type, field interactions, and form actions |
| 86 | +- Welcome Back returning supporter recognition |
| 87 | +- Multi-step form support controlled via content blocks in the page builder |
| 88 | + |
| 89 | +### TidyContact Integration (Paid Add-on) |
| 90 | +- **TidyContact Address** — Format US addresses to the CASS standard in real time on form submission |
| 91 | +- **TidyContact Phone** — Format mobile numbers to the Twilio E.164 format in real time |
| 92 | +- **TidyContact Email** — Validate email addresses in real time before form submission |
| 93 | +- **TidyContact QuickFill** — Remember Me to save and pre-fill supporter info cross-domain/subdomain |
| 94 | + |
| 95 | +## Organizations Using ENgrid |
| 96 | + |
| 97 | +| | | | |
| 98 | +|---|---|---| |
| 99 | +| Amnesty International USA (AIUSA) | American Technion Society (ATS) | Catholic Extension | |
| 100 | +| Center for Science in the Public Interest (CSPI) | Earth Island Institute | Engaging Networks | |
| 101 | +| Evangelical Lutheran Church in America (ELCA) | Food and Water Watch (FWW) | Friends of Canadian Broadcasting | |
| 102 | +| Human Rights Campaign (HRC) | International Fund for Animal Welfare (IFAW) | Just Liberty | |
| 103 | +| Mercy for Animals | National Parks Conservation Association (NPCA) | National Trust for Historic Preservation (NTHP) | |
| 104 | +| National Wildlife Federation (NWF) | Oceana | Ocean Conservancy | |
| 105 | +| Organic Consumers Association | Oxfam America | Oxfam Canada | |
| 106 | +| People for the Ethical Treatment of Animals (PETA) | Polaris Project | Rainforest Action Network (RAN) | |
| 107 | +| Saint Anthony's Guild (Friar Works) | Save the Children Action Network (SCAN) | Save Tibet | |
| 108 | +| Shatterproof | SPCA International (SPCAI) | The Nature Conservancy (TNC) | |
| 109 | +| Turtle Island Restoration Network | Van Andel Institute | World Wildlife Fund (WWF) | |
| 110 | + |
| 111 | +## Getting Started |
| 112 | + |
| 113 | +Start a new client theme from the template repo: |
| 114 | + |
| 115 | +``` |
| 116 | +git clone https://github.com/4site-interactive-studios/engrid-template.git my-org-theme |
| 117 | +cd my-org-theme |
| 118 | +npm install |
| 119 | +npm run watch |
| 120 | +``` |
| 121 | + |
| 122 | +For full setup instructions, see [Creating an ENgrid Theme](https://engrid.4sitestudios.com/docs/v2/creating-an-engrid-theme) in the documentation. |
| 123 | + |
| 124 | +## Documentation |
| 125 | + |
| 126 | +- [Features Overview](https://engrid.4sitestudios.com/docs/v2/features-overview) — What ENgrid can do |
| 127 | +- [Content Editor Guide](https://engrid.4sitestudios.com/docs/v2/content-editor-guide) — For non-developers managing page content |
| 128 | +- [Developer Training Guide](https://engrid.4sitestudios.com/docs/v2/training) — Setup, theming, and development workflow |
| 129 | +- [Release Notes](https://www.4sitestudios.com/engrid-release-notes/) — What's new in each release |
| 130 | + |
| 131 | +## Repository Structure |
| 132 | + |
| 133 | +This is a Lerna monorepo containing two packages: |
| 134 | + |
| 135 | +- **[@4site/engrid-scripts](https://www.npmjs.com/package/@4site/engrid-scripts)** — TypeScript framework powering ENgrid's functionality |
| 136 | +- **[@4site/engrid-styles](https://www.npmjs.com/package/@4site/engrid-styles)** — SCSS base styles for ENgrid page templates |
| 137 | + |
| 138 | +Client themes install these as npm dependencies and extend them with organization-specific customizations. |
| 139 | + |
| 140 | +## Development |
| 141 | + |
| 142 | +```shell |
| 143 | +# Clone the repo |
| 144 | +git clone https://github.com/4site-interactive-studios/engrid.git |
| 145 | +cd engrid |
| 146 | + |
| 147 | +# Install dependencies |
| 148 | +npm install |
| 149 | + |
| 150 | +# Build all packages |
| 151 | +npm run build |
| 152 | + |
| 153 | +# Watch for changes during development |
| 154 | +npm run watch |
| 155 | +``` |
126 | 156 |
|
127 | 157 | ## ENgrid Resources |
128 | 158 |
|
129 | | -- [ENgrid Template Github Repository](https://github.com/4site-interactive-studios/engrid-template/) |
130 | 159 | - [ENgrid Documentation](https://engrid.4sitestudios.com/) |
131 | | -- [Community Run EN Slack Channel](https://join.slack.com/t/endevelopers/shared_invite/enQtNTgyMDU5NDEzOTQxLWM1YjkwYmM2NjcxODdhNjI4MmRhMjI1ZTJlNzZlYTM5MmI4OTg3NTlhZTljMDMyMjczZmYyNTBjZmM4ZDY4MTA) |
| 160 | +- [ENgrid Template Repository](https://github.com/4site-interactive-studios/engrid-template/) |
| 161 | +- [ENgrid Release Notes](https://www.4sitestudios.com/engrid-release-notes/) |
| 162 | +- [Community EN Slack Channel](https://join.slack.com/t/endevelopers/shared_invite/enQtNTgyMDU5NDEzOTQxLWM1YjkwYmM2NjcxODdhNjI4MmRhMjI1ZTJlNzZlYTM5MmI4OTg3NTlhZTljMDMyMjczZmYyNTBjZmM4ZDY4MTA) |
132 | 163 |
|
133 | 164 | ## Engaging Networks Resources |
134 | 165 |
|
135 | 166 | - [Engaging Networks Supportal](https://engagingnetworks.support/) |
136 | | -- [Engaging Networks Acadmey](https://engagingnetworks.academy/) |
137 | | -- [Engaging Networks Maintained Example Code Blocks](https://github.com/EngagingNetworks/page-builder-code-blocks) |
138 | | -- [Engaging Networks Maintained Example Page Styles](https://github.com/EngagingNetworks/page-builder-css-styles) |
| 167 | +- [Engaging Networks Academy](https://engagingnetworks.academy/) |
| 168 | +- [Engaging Networks Code Blocks](https://github.com/EngagingNetworks/page-builder-code-blocks) |
| 169 | +- [Engaging Networks Page Styles](https://github.com/EngagingNetworks/page-builder-css-styles) |
139 | 170 |
|
140 | | -# Interested in a project or have questions? |
| 171 | +## Interested in ENgrid? |
141 | 172 |
|
142 | | -We would love to hear from you. |
| 173 | +We'd love to hear from you. |
143 | 174 |
|
144 | | -Bryan Casler |
145 | | -Director of Digital Strategy |
146 | | -4Site Interactive Studios |
147 | | -Cell: (315) 877-3420 |
| 175 | +**Bryan Casler** |
| 176 | +Vice President of Digital and AI Strategy |
| 177 | +4Site Interactive Studios |
| 178 | +Cell: (315) 877-3420 |
148 | 179 | Email: bryan@4sitestudios.com |
| 180 | + |
| 181 | +[Contact 4Site Studios](https://www.4sitestudios.com/contact/) | [Learn more about ENgrid](https://www.4sitestudios.com/engaging-networks/?ms=github) |
0 commit comments