{"id":40,"date":"2026-07-13T11:04:31","date_gmt":"2026-07-13T05:34:31","guid":{"rendered":"https:\/\/jnkplugins.com\/blog\/docs\/entryvault\/"},"modified":"2026-07-13T11:05:50","modified_gmt":"2026-07-13T05:35:50","slug":"entryvault","status":"publish","type":"page","link":"https:\/\/jnkplugins.com\/blog\/docs\/entryvault\/","title":{"rendered":"EntryVault"},"content":{"rendered":"<p><a href=\"https:\/\/jnkplugins.com\/entryvault\/\" class=\"jnk-linkweave-auto\">EntryVault<\/a> captures form submissions from many builders and stores them in its own tables, then presents them as one searchable, taggable Kanban board. This page explains how that works so you can reason about \u2014 and extend \u2014 it.<\/p>\n<h2>How capture works<\/h2>\n<p>EntryVault ships one <em>adapter<\/em> per supported form builder. On each request it detects which form plugins are active and registers only the matching adapters \u2014 so there&#8217;s no overhead for plugins you don&#8217;t use. When a form is submitted, the adapter reads the submission through that builder&#8217;s own hooks, normalises it into a common shape, and hands it to EntryVault&#8217;s sync engine.<\/p>\n<p>Supported builders (all in the free tier): Contact Form 7, WPForms, Gravity Forms, Fluent Forms, Forminator, SureForms, Ninja Forms, Formidable Forms, WS Form, Everest Forms, and <a href=\"https:\/\/jnkplugins.com\/trinity-forms\/\" class=\"jnk-linkweave-auto\">Trinity Forms<\/a>.<\/p>\n<h2>The normalised submission<\/h2>\n<p>Every adapter converts a builder-specific payload into the same normalised structure before storage: a list of fields (label, key, value, type), a best-guess <strong>email<\/strong> and <strong>title<\/strong> for the card, and a dedupe identity. EntryVault copies this into its own tables (<code>{$wpdb-&gt;prefix}ev_submissions<\/code> and <code>ev_submission_data<\/code>) \u2014 it never modifies your source plugin&#8217;s data, so deleting the original form leaves your EntryVault records intact.<\/p>\n<h2>De-duplication<\/h2>\n<p>A submission&#8217;s identity is the triple <strong>(source plugin, source form id, source entry id)<\/strong>. Ingest is idempotent on that triple, so re-processing the same submission won&#8217;t create a duplicate card. Adapters for builders that store nothing of their own (Contact Form 7 is the classic case) synthesise a unique entry id per submission, so distinct submissions never collapse into one record.<\/p>\n<h2>Capture timing (why you don&#8217;t lose leads)<\/h2>\n<p>Where a builder offers a pre-send hook, the adapter captures there rather than on &#8220;mail sent&#8221;. For Contact Form 7 that means capturing on <code>wpcf7_before_send_mail<\/code> \u2014 the same hook Flamingo uses \u2014 so a submission is recorded <em>even if the notification email fails to send<\/em>.<\/p>\n<h2>Working with submissions<\/h2>\n<ul>\n<li><strong>Board &amp; list.<\/strong> Every entry lands on a Kanban board and in a Submissions list, filterable by pipeline, stage, source, or date and searchable by name\/email.<\/li>\n<li><strong>Tags, owners, notes.<\/strong> Colour-coded multi-tags, an owner (any WP user), and timestamped notes per card.<\/li>\n<li><strong>CSV import &amp; export.<\/strong> Export everything or a filtered view; import (with preview and dry-run) to backfill from another tool.<\/li>\n<\/ul>\n<h2>The Pro workflow layer<\/h2>\n<p>Storing and exporting is free forever. Pro adds a workflow layer on top of the same data: multiple pipelines, drag-through stages, owner round-robin, an automation engine (triggers \u2192 conditions \u2192 actions), and IMAP reply sync that threads email replies back onto the right card. These are additive \u2014 the free capture-and-store behaviour is unchanged whether or not Pro is active.<\/p>\n<h2>Extending EntryVault<\/h2>\n<p>The most common extension is teaching EntryVault about a new form builder. Because every integration is just one small class implementing a three-method contract, that&#8217;s a short job \u2014 see <a href=\"\/blog\/docs\/entryvault-adapters\/\">Writing an EntryVault adapter<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>EntryVault captures form submissions from many builders and stores them in its own tables, then presents them as one searchable, taggable Kanban board. This page explains \u2026<\/p>\n","protected":false},"author":0,"featured_media":0,"parent":5,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-40","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.0 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>EntryVault - JnK Plugins Blog<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jnkplugins.com\/blog\/docs\/entryvault\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"EntryVault - JnK Plugins Blog\" \/>\n<meta property=\"og:description\" content=\"EntryVault captures form submissions from many builders and stores them in its own tables, then presents them as one searchable, taggable Kanban board. This page explains \u2026\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jnkplugins.com\/blog\/docs\/entryvault\/\" \/>\n<meta property=\"og:site_name\" content=\"JnK Plugins Blog\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-13T05:35:50+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/docs\\\/entryvault\\\/\",\"url\":\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/docs\\\/entryvault\\\/\",\"name\":\"EntryVault - JnK Plugins Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/#website\"},\"datePublished\":\"2026-07-13T05:34:31+00:00\",\"dateModified\":\"2026-07-13T05:35:50+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/docs\\\/entryvault\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/docs\\\/entryvault\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/docs\\\/entryvault\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Documentation\",\"item\":\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/docs\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"EntryVault\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/\",\"name\":\"JnK Plugins Blog\",\"description\":\"Guides, comparisons, and tutorials for our WordPress plugins\",\"publisher\":{\"@id\":\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/#organization\",\"name\":\"JnK Plugins\",\"url\":\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/jnkplugins-jk-logo-512.png\",\"contentUrl\":\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/jnkplugins-jk-logo-512.png\",\"width\":512,\"height\":512,\"caption\":\"JnK Plugins\"},\"image\":{\"@id\":\"https:\\\/\\\/jnkplugins.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.youtube.com\\\/@JnKPlugins\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/jnkplugins\\\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"EntryVault - JnK Plugins Blog","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jnkplugins.com\/blog\/docs\/entryvault\/","og_locale":"en_US","og_type":"article","og_title":"EntryVault - JnK Plugins Blog","og_description":"EntryVault captures form submissions from many builders and stores them in its own tables, then presents them as one searchable, taggable Kanban board. This page explains \u2026","og_url":"https:\/\/jnkplugins.com\/blog\/docs\/entryvault\/","og_site_name":"JnK Plugins Blog","article_modified_time":"2026-07-13T05:35:50+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/jnkplugins.com\/blog\/docs\/entryvault\/","url":"https:\/\/jnkplugins.com\/blog\/docs\/entryvault\/","name":"EntryVault - JnK Plugins Blog","isPartOf":{"@id":"https:\/\/jnkplugins.com\/blog\/#website"},"datePublished":"2026-07-13T05:34:31+00:00","dateModified":"2026-07-13T05:35:50+00:00","breadcrumb":{"@id":"https:\/\/jnkplugins.com\/blog\/docs\/entryvault\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jnkplugins.com\/blog\/docs\/entryvault\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/jnkplugins.com\/blog\/docs\/entryvault\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/jnkplugins.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Documentation","item":"https:\/\/jnkplugins.com\/blog\/docs\/"},{"@type":"ListItem","position":3,"name":"EntryVault"}]},{"@type":"WebSite","@id":"https:\/\/jnkplugins.com\/blog\/#website","url":"https:\/\/jnkplugins.com\/blog\/","name":"JnK Plugins Blog","description":"Guides, comparisons, and tutorials for our WordPress plugins","publisher":{"@id":"https:\/\/jnkplugins.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jnkplugins.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jnkplugins.com\/blog\/#organization","name":"JnK Plugins","url":"https:\/\/jnkplugins.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jnkplugins.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/jnkplugins.com\/blog\/wp-content\/uploads\/2026\/08\/jnkplugins-jk-logo-512.png","contentUrl":"https:\/\/jnkplugins.com\/blog\/wp-content\/uploads\/2026\/08\/jnkplugins-jk-logo-512.png","width":512,"height":512,"caption":"JnK Plugins"},"image":{"@id":"https:\/\/jnkplugins.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.youtube.com\/@JnKPlugins","https:\/\/www.linkedin.com\/company\/jnkplugins\/"]}]}},"_links":{"self":[{"href":"https:\/\/jnkplugins.com\/blog\/wp-json\/wp\/v2\/pages\/40","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jnkplugins.com\/blog\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/jnkplugins.com\/blog\/wp-json\/wp\/v2\/types\/page"}],"replies":[{"embeddable":true,"href":"https:\/\/jnkplugins.com\/blog\/wp-json\/wp\/v2\/comments?post=40"}],"version-history":[{"count":1,"href":"https:\/\/jnkplugins.com\/blog\/wp-json\/wp\/v2\/pages\/40\/revisions"}],"predecessor-version":[{"id":49,"href":"https:\/\/jnkplugins.com\/blog\/wp-json\/wp\/v2\/pages\/40\/revisions\/49"}],"up":[{"embeddable":true,"href":"https:\/\/jnkplugins.com\/blog\/wp-json\/wp\/v2\/pages\/5"}],"wp:attachment":[{"href":"https:\/\/jnkplugins.com\/blog\/wp-json\/wp\/v2\/media?parent=40"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}