Our customers have requested it many times. Today, we are excited to introduce a new feature to SyncS3 we think you’re gonna love! “Direct to S3” sends your file uploads (submitted via Gravity Forms) directly to your S3 bucket without ever hitting your server. This allows you to bypass your server’s limitations, such as file sizes or timeouts. Now you can upload 2GB video files without any complaints from your server! This new feature is available in SyncS3 version 1.6.0.

Why Would You Need Direct to S3?

Primarily due to server limitations. For example, we have plenty of customers who host their websites on WPEngine. However, given WPEngine’s limitations on file uploads, uploading things like large video files can be very difficult. SyncS3 steps in with Direct to S3 to completely bypass WPEngine’s servers to upload these kinds of files to your S3 buckets.

Aside from getting around server limitations, the Direct to S3 feature also improves the user experience of your form by providing a snappier upload process. It includes a progress bar to let users know how far their uploads have made it, and can upload files while the user finishes the rest of the form.

Getting Started with Direct to S3

The “Direct to S3” feature is contained within a new field. This field can be added to your forms like normal in the Gravity Forms form editor.

SyncS3 "Direct to S3" upload field

The new uploader uses special S3 settings and configurations to upload files directly from the browser to your S3 bucket. To ensure a proper setup, first follow these steps:

1. Make sure you have created your bucket. Note your bucket’s region, as you will need it in the next step.

2. In the Amazon Cognito console, create an Amazon Cognito identity pool using Federated Identities with access enabled for unauthenticated users. This Identity must be in the same Region as your S3 bucket, so be sure to select the correct region. You need to include the identity pool ID in the code to obtain credentials for the browser script, so copy it to your clipboard.

3. In the IAM console, find the IAM role created by Amazon Cognito for unauthenticated users. Add the following policy to grant read and write permissions to your S3 bucket (replace BUCKET_NAME with your bucket’s slug).

   "Version": "2012-10-17",
   "Statement": [
         "Effect": "Allow",
         "Action": [
         "Resource": [            

4. In your bucket’s Permissions settings, add the following CORS policy to allow uploads from the browser:

        "AllowedHeaders": [
        "AllowedMethods": [
        "AllowedOrigins": [
            "*" // You can replace this with your domain to restrict uploads to only those originating from your website.
        "ExposeHeaders": [

After you’ve configured everything in your AWS account, come back to your field settings and insert your Identity Pool ID. You can also set the maximum number of files for the field, and the accepted file types (e.g. .pdf).

Finally, select the upload action. This tells SyncS3 when to upload the files. You can choose between File Select or Form Submit. File Select uploads files as soon as the user selects them. This is perceivably faster because the upload occurs right away, and the user can finish the rest of the form while the upload completes. However, it can result in uploaded files for incomplete submissions.

The Form Submit option uploads files when the user submits the form. Since the user has completed the form at this point, they’ll have to wait while the files are uploaded. This seems like a slower process for the end user, but it ensures you’re not hosting files for incomplete submissions.


The “Direct to S3” feature does its business asynchronously, so files are uploaded before an entry is created. If you’re using SyncS3 filters to customize a file’s path, these filters won’t work with the “Direct to S3” uploader because the upload doesn’t occur through your server. As a result, you’ll need to rely on some custom Javascript and user input to customize the file path. Here’s a snippet you can use to get started:

add_action( 'wp_head', 'add_custom_setS3Path_js', 99 );
 * Add a custom Javascript function to create the file path in your S3 bucket.
 * This function will need adjusted to fit your requirements and naming conventions.
function add_custom_setS3Path_js() {
		var setS3Path = function(file, formId) {
			var input1 = document.getElementById("input_" + formId + "_1").value;
			if ( "" != input1 ) {
				input1 += "/";
			var path = input1 + file.name;
			return path;
add_filter( 'syncs3_ajax_uploader_object_path_js', 'function_name', 10, 3 );
 * Runs the custom Javascript function to determine a file path.
 * Default value is "file.name". This will use the file name, and insert it in the root of your bucket.
 * @param  string 	$js    		Custom Javascript
 * @param  object 	$field 		SyncS3_AJAX_Uploader object
 * @param  array 	$form  		Form data
 * @return string
function function_name( $path_js, $field, $form ) {
	$path_js = "setS3Path(file, {$form['id']})";
	return $path_js;

Our WordPress content protection modules can now revoke dripped membership content! In addition to dripping content after any given amount of time, you can now set that content to become unavailable after any given amount of time.

This allows for drip scenarios where you charge for a set period of access, but stagger the availability of your content. For example, let’s say you sell a course and charge users for one month of access. The course, though, has four different sections, where each section is available in order – one each week. Part 1 is available in week 1, Part 2 in week 2, etc. With content revocation, you can now revoke access to Part 1 in Week 2, etc.

Expire Access to Membership Content

To begin using the content revoking feature, simply enable content dripping, enter when the content should become available, and set how much time should pass before it is revoked. Using our Gutenberg integrations, the settings would look like this.

WordPress revoke membership content

The new feature to revoke access to membership content is available in all of our content protection modules. Users of WooCommerce Memberships, LifterLMS, Paid Memberships Pro, and Easy Digital Downloads can drip and revoke content using Elementor, Divi, Beaver Builder, or Gutenberg!

Want to find the perfect content protection module for your website? Try our simple setup wizard. Just select which page builder and membership platform you use, and we’ll show you the right module.

Send File Uploads Straight to Amazon S3

SyncS3 for Gravity Forms lets you send your file uploads to any Amazon S3 bucket. Store your images, videos, and other files on Amazon's high quality infrastructure.

SyncS3 version 1.4 was just released. The new version features support for Gravity PDF!

If you’re not familiar with it, Gravity PDF is a sweet plugin for Gravity Forms that automatically generates PDFs of form entry/submission data. This is very handy if you need to store or distribute copies of entry data. The PDFs are self-hosted, meaning there’s no need for a third-party service to generate or host your PDFs; everything is handled right on your own server and website.

While it’s great to handle the PDF generation on your own site without any third-party dependencies, you may want to store the PDF files externally, especially if you process a lot of submissions. Storing the files on Amazon S3, for example, gives you flexibility in distributing the files, and can free up a lot of disk space on your server.

SyncS3 1.4 integrates with Gravity PDF to offload PDF files to any S3 bucket you wish. If you’re using SyncS3 to offload file uploads, it will default to using your form’s SyncS3 settings (if set), or the global SyncS3 settings. If you want to push file uploads to one bucket and your PDF file to another, just overwrite the account/bucket in the PDF settings.

SyncS3 + Gravity PDF Support

Uploading PDF files to S3 is as easy as checking a box. Head over to your form’s PDF settings, click the Advanced tab, and scroll down to the Upload PDF to S3 setting. Enable that setting, select whether you’d like the local PDF to be removed, and configure the account and bucket settings as needed.

One important thing to note is that you need to set the Always Save PDF setting to “Yes.” This tells Gravity PDF to actually save a PDF file to disk, rather than always generating PDFs on the fly. These “hard” copies are needed to upload to S3.

Each time a PDF is generated, SyncS3 will push it to your S3 bucket. If you enabled the Delete Local PDF setting, the file will be deleted on your server, freeing up disk space.

Send File Uploads Straight to Amazon S3

SyncS3 for Gravity Forms lets you send your file uploads to any Amazon S3 bucket. Store your images, videos, and other files on Amazon’s high quality infrastructure.

Gravity PDF users can select from a variety of different pre-made templates to use for different layouts and designs in their PDFs. The Gravity PDF team also offers bespoke templates tailored specifically to your requirements.

Joining the Elegant Modules family of page builder extensions is Payments for Elementor. Payments for Elementor is a lightweight, flexible widget for Elementor that allows users to add simple payment forms anywhere on their website. The payment forms are powered by Stripe, and it integrates directly with your Stripe account.

Let’s take a look at how it works!

Payments for Elementor payment form

Simply put, not everyone needs WooCommerce. E-commerce plugins for WordPress, such as WooCommerce and Easy Digital Downloads, are fantastic solutions for those who need their features. If you need a shopping cart, advanced product management, or shipping integrations, you may want to consider them.

Payments for Elementor allows for creating simple payment forms, and placing them where you need. That said, Payments for Elementor does include a number of handy features that you also get with larger e-commerce plugins.

Payments for Elementor widget settings
Payments for Elementor payment details
Included with Payments for Elementor is a simple dashboard for viewing and managing your payments, including the ability to issue full or partial refunds.
Payments for Elementor settings
Payments for Elementor global settings for things like currency selection, statement descriptor, and more.


Payments for Elementor is free to download and start using. To be able to offer Payments for Elementor for free, and to support all of our customers, we offer two different payment options.

  1. Per transaction – No upfront costs, no annual renewals. Just a simple, low price of 5% per transaction that is processed through Payments for Elementor (in addition to normal Stripe fees).
  2. Yearly license – By activating a license for Payments for Elementor, you will pay 0 additional fees (just the normal Stripe fees).

Our philosophy is that if you’re not making money using Payments for Elementor, we don’t charge you anything. These pricing options allow us to fulfill that philosophy, and guarantee the same level of support to all of our customers – no “regular” vs. “priority” support. Our pricing options for Payments for Elementor are designed for what works best for you.

Building Payments for Elementor

Payments for Elementor is new and will continue to grow in the features it offers. If you’re comfortable with code, though, Payments for Elementor includes plenty of hooks for customizing the behavior, and adding new functionality.

Get started with Payments for Elementor for free!

It’s here: our newest Divi integration – Divi Payments. AND it’s free to download! Divi Payments will provide Divi users with the ability to create and place custom payment forms anywhere on their website. The payment forms are powered by Stripe.

Divi Payments vs other e-commerce plugins

Simply put, not everyone needs WooCommerce. E-commerce plugins for WordPress, such as WooCommerce and Easy Digital Downloads, are fantastic solutions for those who need their features. If you need a shopping cart, advanced product management, or shipping integrations, they’ll be your better options.

Elegant Modules Divi + WooCommerce Content Protection

Extensions for Divi

In addition to Payments for Divi, check out our content protection and dripping modules for Divi. Pair Divi with your membership plugin to effortlessly protect and drip your content.

Divi Payments allows for creating simple payment forms, and placing them where you need. That said, Divi Payments does include a number of handy features that you also get with larger e-commerce plugins. Let’s take a look at what Divi Payment does.

Divi Payments Settings

After installing Divi Payments, you’ll need to configure its settings. This is where you’ll add your Stripe keys, set a Statement Descriptor, switch between Test and Live mode, and more.

Divi Payments Settings

Create a Payment Form

After you’ve configured your global settings for Divi Payments, the next step is to create a payment form! The great thing about creating payment forms is that the process is the same as adding any other content in Divi.

Head over to a page where you’d like to add a payment form, and launch the Divi Builder. Chose where you want to add the form (e.g. section, row, column, etc.), search for the “Payment Form” module, and insert the module. The Payment Form module gives you the following settings:

Divi Payments Builder

Payment Details

  • Payment Amount – The amount to charge your customer.
  • Payment Description – A description for what you’re charging the customer.
  • Redirect URL – Where the customer will be sent after payment is successfully completed.

Payment Form

  • Button Text – Text for the payment submit button.
  • Enable Email – Collect an email from the customer.
  • Enable Name – Collect the customer’s name.

Design Settings

As with all other Divi modules, you can modify the appearance of the purchase form via the Design tab.

After configuring and saving your payment form, you’ll get something like this on the frontend of your page.

Divi Payment Form

Payments in the Admin

Any payments system wouldn’t be very useful without a quick, easy way to view and manage payments. Divi Payments includes an admin area where you can view your payments, and even issue full or partial refunds without needing to open your Stripe dashboard.

Divi Payments List of Payments
Divi Payments Single Payment Admin

Divi Payments is Lightweight, but Flexible

Divi Payments is new and will continue to grow in the features it offers. If you’re comfortable with code, though, Divi Payments includes plenty of hooks for customizing the behavior, and adding new functionality.

Download Payments for Divi

To download Payments for Divi, just complete the download form below, and we’ll send you a copy. We hope you enjoy it. Go create something awesome!

It’s an exciting day! We’re launching our content protection and dripping modules for Paid Memberships Pro. PMP users can now visually protect and drip their premium membership content using any of their favorite page builders for WordPress, such as Beaver Builder, Gutenberg, Elementor, and Divi.

Content Protection for Gutenberg and Paid Memberships Pro

Have questions about getting started? Reach out any time!

We’re excited to announce the release of our content drip and protection integrations with LifterLMS for Divi, Beaver Builder, Elementor, and Gutenberg!

LifterLMS content protection for Gutenberg

Our LifterLMS integrations allow you to protect or drip content by courses or memberships. You can further control access according to Access Plans! This means you can grant access to content for any paying member of a course, and create special content for members of the highest course plan.

Best of all, you can protect and drip your content right from within your favorite page builder, such as Gutenberg or Divi! There’s no need to paste shortcodes, or adjust settings that can be hard to find. Just open up your page builder’s editor, edit your content, and set your protection/drip rules.

Ready to start offering premium content for your course members? See our Getting Started page to find the right module for you!

We’ve been hard at work bringing content dripping for Easy Digital Downloads, and integrating it with page builders like Gutenberg, Divi, Elementor, and Beaver Builder. If you use Recurring Payments from Easy Digital Downloads to sell subscriptions, you can now protect and drip your content right from your favorite page builder’s editor.

Drip content with Easy Digital Downloads Recurring Payments and Beaver Builder

Check out our Getting Started questionnaire to find the right module for you. Just select your page builder of choice, select EDD as your membership plugin, and we’ll show you the right module.

After installing the integration for your page builder, you’ll see a new tab available within that page builder’s editor. For example, in Divi, you will see a “Protect” tab for sections and rows. There you can configure how you want to protect your content (show it only to customers who have purchased a particular recurring product), or drip it to your members. Quickly and easily set any content to drip out 5 days, 2 weeks, or even 6 months after customers purchase a recurring product!

You can also drip content with Easy Digital Downloads using Gutenberg, the new WordPress editor! The Elegant Modules Content Restriction block gives you ability to protect premium content and drip it to customers that same as with any page builder.

We’re SUPER excited to release content dripping for Elegant Modules. In addition to integrating the most popular WordPress page builders with some of the best membership systems to protect your premium content, you can now drip any content using the Drip Content settings for your page builder of choice.

Elegant Modules Drip Content Feature

Content dripping is great for website owners who sell premium content, but would prefer to spread out the access to that content. For example, course creators spends weeks or months creating valuable content for their courses, such as videos, documents, etc. If those creators charge a monthly fee for access, many customers will sign up, download all the content, and cancel immediately. Content dripping requires the customer to be signed up for a minimum period of time before they receive access to certain content. This helps increase the number of recurring payments for content creators like this.

Our Drip Content feature is currently available in all of our WordPress page builder integrations, and for all of our membership plugin integrations.

Drip Content with Divi

Content dripping for Divi is available right in the Divi Builder. Select your Divi Section or Row, and configure your drip settings.

Drip Content with Gutenberg

To drip content in Gutenberg, place any content within our Content Restriction block. The Content Restriction bar includes the Drip Content settings in the Content Protection block settings. Just open up your Content Protection settings and set your drip rules.

Drip Content with Beaver Builder

For Beaver Builder, open up the settings for any Row module, click the Protect tab. Toggle the Drip Content options, and configure your settings.

Drip Content with Elementor

Same process for Elementor! Open your Row settings, click the Elegant Modules tab, toggle the Drip Content options, and set your content drip rules.

Content Dripping from Elegant Modules provides a familiar, intuitive way for WordPress users to drip any content at any time. All right from within their favorite page builders, including Divi, Gutenber, Elementor, and Beaver Builder. No messing with ugly shortcodes, just set your content to drip at the time you want. Check out our modules to get started!

Hello! We’re Elegant Modules. Our goal is to bring a seamless content editing experience to users of the most popular page builders and membership plugins for WordPress. In the past, protecting your premium membership content was done by adding shortcodes across your pages, editing their attributes, etc. If you’ve done it this way, you know how messy it can be.

Really, though?! We have amazing visual builders nowadays that let us create our pages, headers, footers, and pretty much everything in between without needing to touch code. Divi, Beaver Builder, Elementor, and others are fantastic tools that make websites more accessible to anyone. Even for developers who know how to code, it’s often quicker and easier to use a page builder for many things.

So why do we still have to mess with ugly shortcodes to hide content restricted to paid members? Well, because there are a variety of different systems for both page builders and membership functionality. Page builders don’t want to support every membership plugin out there, and membership plugins don’t want to support every page builder out there.

That’s where we’re stepping in. Elegant Modules was built to integrate content protection for a variety of membership plugins right into your visual builder of choice. Using Beaver Builder with WooCommerce Memberships? Forget those shortcodes, just configure your Rows’ content protection rules. Divi with Easy Digital Downloads Recurring Payments? Same thing! Our modules add settings to the most popular visual builders for WordPress, integrate with some of the most popular membership plugins, and allow you to determine which content is restricted to members right from within the visual builder’s editor. We even have integrations for the new built-in WordPress editor, Gutenberg!

Elegant Modules Beaver Builder WooCommerce Memberships Integration
Your Cart
Your cart is currently empty.
Open Cart