Contact Form 7

[solved] Infinite Spinning arrow in Contact Form 7 Plugin

Contact Form 7 plugin is currently the most used contact form plugin in WordPress. In fact when you search on the internet for procedures of creating a contact page for your blog, most blogs will ask you to download Contact Form 7. The plugin is absolute free and survives on donations but has a lot of great features. However, there have been a few misconceptions about WordPress not sending emails not knowing the problem lies within the plugin and it’s the contact form not sending emails.

From my own experience, Contact Form 7 WordPress plugin is not compatible with every theme or plugin out there. In some cases using it alongside certain themes or plugins will cause a JavaScript conflict which is the main reason behind the infinite spinning arrow when you are trying to send a message using the form. This is mainly because the Ajax script of the plugin is conflicting with either one of the scripts on your theme or another plugin causing it to stay rolling infinitely.

What you should also know is the infinite spinning arrow in Contact Form 7 issue also happens when post permalinks are changed from default to %postname%. Sometimes contact form 7 cannot send emails on a %postname% permalink structure. However, If the permalink structure is remains on Default then the form should just work fine.

Solving spinning arrow in Contact Form 7

Is contact form 7 not sending emails? Am going to show you two ways you can fix the infinite spinning arrow issue in Contact Form 7 plugin. I’ve tested all these methods and they have worked fine for me. Am sure they will help you solve the issue as well.

Method 1 – Change Permalink Structure to Default

This is usually the easiest fix and doesn’t require altering with any codes in the plugin. All you have to do is visit your website’s administration dashboard in WordPress (wp-admin), then go to Settings >> Permalinks and choose the default option box. This will restore your permalink structure to it’s defaults and make the Contact Form 7 to work just fine. However, this is not the best method since it’s a good practice to keep your permalink structure to %postname%. It’s very vital when it comes to SEO and besides, some WordPress SEO plugins like WordPress SEO by Yoast require the %postname% permalink structure to enable sitemap functionality on your blog. If you are having difficulties with the default permalink structure then i recommend you try out the alternative below.

Method 2 – Disable Ajax Load

This is actually the best option. All you have to do disable Ajax load from the plugin configuration file to disable the form from sending messages using JavaScript. Usually when JavaScript is enabled the page doesn’t refresh while sending messages but when disabled, the page will refresh. To disable the plugin from using JavaScript to send messages simply go to Plugins, Contact Form 7, click on edit and locate the wp-contact-form-7.php file then make the amendments below.

define( 'WPCF7_LOAD_JS', true);


define( 'WPCF7_LOAD_JS', false);

Method 3 (Permanent Fix) – Disable Ajax from wp-config.php file

The second method works perfectly but you have to keep editing the wp-contact-form-7.php file after every update which can be irritating. Sometimes when you forget to make the changes, the same issue comes back. This might cost you a few customers.

So i had to think of a third permanent fix to the updates. Fact is you need the updates if you are to keep secure. I do not advise you to change your plugin version to disable updates. It is not advisable! Keep updating your plugins often.

This last method is a patch to the second but offers a permanent fix. It however, requires a lot of caution. I advise you first backup your wp-config.php file before committing any changes to it. If you do not know where to find the wp-config.php file on the server or how to edit it, you can read this definitive guide from wp-beginner.

Please note that if you have no technical knowledge about WordPress and PHP, i advise you contact your web host technical customer care to add the code for you otherwise, you risk a brick on your site. We are going to disable ajax by pasting the following code on your wp-config.php file.

// Begin Disable Ajax

define( 'WPCF7_LOAD_JS', false);

// End Disable Ajax

After pasting the above code in your wp-config.php file, check your site to ensure its running perfectly. If you see any error it means you did not paste the code properly. Restore the previous file and paste the code again.

If your site runs perfectly after pasting the code, try filling out a contact form on the site to confirm ajax has been disabled. It should reload the page and not show any spinning arrow. If the message sends successfully, consider it done. You can now update CF7 as many times as you want and use it without Ajax.

The three methods will usually solve the infinite spinning arrow issue in Contact Form 7 plugin. Is your WordPress Contact Form 7 plugin not sending emails still? if you disable Ajax and still face the same problem then it could be a problem with your theme or one of the installed plugins.

Have you encountered the same situation before? how did you solve the infinite spinning arrow Contact Form 7 plugin issue? share with us below. If this article has solved your issue feel free to share it with your friends.

Authored By Kolo Pius

Kolo Pius is the founder of TutorialFAQ. He writes Badass articles for it and is an avid traveler too. Most of the time he travels while blogging and coding. You can hire me for your next Web Project, Mobile Project or SEO Services. About Me | Facebook | Twitter


Leave a Comment

Your email address will not be published. Required fields are marked *

79 comments on “[solved] Infinite Spinning arrow in Contact Form 7 Plugin”

  1. Opio Brandon

    Disabling JavaScript got it all right for me. Thanks for the nice tips.

    1. Kolo Pius

      Thanks for reading too! Cheers.

  2. Micki Cheers

    Thanks for your help. Disabling Js worked for me also, unfortunately its not the idea solution for my implementation because we use “on_sent_ok” Js to redirect to a second page upon submission. Thanks anyway. πŸ™‚

    1. Bud

      Same problem here. Did you find a solution?

      1. Kolo Pius

        Disable Javascript and it should work just fine.

        1. Patrick

          Option 2 works, unless you have a redirect (β€œon_sent_ok”) to a ‘Thank you page’. Then this option does not work because it will not load the ‘Thank you page’.

          Any other suggestions?

  3. John P Orfali

    Thank you!

    The change in the JS was the key to the solution.

    My business was really hurting with the form not working properly.

    You made my day.

    1. Kolo Pius

      I am glad i could help πŸ™‚

    2. Steven

      Thanks for the fix I turned Javascript to false and it works for me on two different website, i did reach out to the owner of the plugin but they blame our websites, not interested in finding a solution, but your solution is great. Good Work

      1. Kolo Pius

        I just added a third permanent fix to this article. Check it out! It will help you keep Ajax off even after updates.

    1. Kolo Pius

      Glad i was able to help πŸ™‚

  4. Leon Buford

    Thanks a lot for this. This fixed my issue.

    1. Kolo Pius

      Glad i was able to help πŸ™‚

  5. Mike

    Thanks for the help
    I change my permalink setting to default like you said and my form start working.

    When i change it back to %postname% it continue to work

  6. Imer

    YEAH!!! The second option works just fine, thanks a lot πŸ˜€

  7. Michael Swartz

    Thank you. Option #2 fixed the issue, though the page flashes/refreshes and appends a weird code to the URL: #wpcf7-f1359-p1356-o1. Any way to prevent this or is this because AJAX is off?

  8. Matt

    Thanks for the second option, The first one caused a 500 error after changing permalinks, I had to create a new ht acces file to gain entry back into website. Would reccommend a back up before trying this option.

    1. Kolo Pius

      Glad the second option worked for you. The first one works pretty fine as well but requires your .htaccess to be re writable else you will have to modify the document yourself to correct it. Please grant necessary permissions before resetting your permalink structure to default.

  9. Diede


    I tried the second option. But it is still not working, I just copied the whole code

    define( ‘WPCF7_LOAD_JS’, true);


    define( ‘WPCF7_LOAD_JS’, false);

    and paste it to the wp-contact-form-7.php file. That is correct right? But it is still not working..

    1. Kolo Pius

      That is not correct Diede! Delete and reinstall the plugin again then Look for the line: define( β€˜WPCF7_LOAD_JS’, true); and change true to false. That way JavaScript is disabled and it should work fine.

      1. Diede


        I changed it the way you say. I changed true into false for that line, but it is still not working..

  10. olivier

    tanks a lot working for me. Make my day

  11. Elise

    OMG – I’ve been trying to fix this for two days! Thanks so much – the second option worked for me.

    1. Kolo Pius

      I am glad it worked for you Elise πŸ™‚

    2. Kolo Pius

      Glad it worked! I just added a third permanent fix to this article. Check it out! It will help you keep Ajax off even after updates.

  12. Carrie

    Made both changes and still just spins and spins for me.

    1. Kolo Pius

      Changed true to false?

    2. Kolo Pius

      The second option will disabled ajax and you shouldn’t see any spins.

  13. GS

    I had the same issue – However the bug was coming from contact form 7 mailchimp plugin. Disabled it and everything was fine. Maybe useful to others, hence posting here.

    1. Kolo Pius

      Glad you managed to solve it.

  14. alessandro

    Unfortunately none of the suggested solutions worked for me, and I don’t feel safe patching a plugin file, with the risk of loosing my modification at every plugin update!

    Well, the developer says it’s a plugins conflict that can be solved removing other plugins…. this doesn’t sound to me like a professional answer at all!

    Googling you can find many people saying they’re facing the same issue in many different environment configuration, so, it seems the developer refuses to admit that the badly developed plugin is CF7.

    It’s hard to say this, ’cause I really loved CF7, but as most of the things, also this love couldn’t last forever.

    Bye Bye CF7, I’m forced to move to another plugin!

    1. Kolo Pius

      True! The author of CF7 has kept this pending for long. It is still one of the best contact form plugins though. Very simple and easy to use.

    2. Kolo Pius

      Hey Alessandro! I just added a third permanent fix to this article. Check it out! It will help you keep Ajax off even after updates.

  15. Michel Pineau

    Thanks very much Kolo: you’re a greatprofessional!

    I’m not sure that iI would have found the way to get contact form 7 working again…
    I was thinking about installing another contact form manager…

    Thanks so much.

    1. Kolo Pius

      Much appreciated man. I just added a third permanent fix to this article. Check it out! It will help you keep Ajax off even after updates.

  16. Lixman

    Changing true to false returns a 500 page error when submitting the form for me. Any other fixes. I can’t believe the author won’t release a fix for this.

    1. Kolo Pius

      It should not return an error. Probably you could have deleted a vital part of the code. It should word swiftly. I just added a third permanent fix to this article. Check it out! It will help you keep Ajax off even after updates.

  17. Christo

    This really helped! Thank you sooooo much πŸ™‚

    1. Kolo Pius

      Glad it helped! I just added a third permanent fix to this article. Check it out! It will help you keep Ajax off even after updates.

  18. Bittu Debnath

    Changing the permalink back and forth did the trick for me…
    Thanks dude

    1. Ellah Victor

      Hello, Did changing the permalink structure not affect you your existing posts and pages?

      1. Kolo Pius

        We only recommend the first method for new websites. If your website has been running for long, do not tamper with the permalinks. It will mess up your SEO.

    2. Kolo Pius

      Glad it worked πŸ™‚

  19. ExtraPaul

    The second solution works for me.
    I have tried to write the line “define( β€˜WPCF7_LOAD_JS’, true);” in functions.php (best practice if wpcf7 is updated), but it doesn’t work…

      1. Kolo Pius

        Great fix! I just added it to the article.

    1. Kolo Pius

      I just added a third permanent fix to this article. Check it out! It will help you keep Ajax off even after updates.

  20. Ryan

    Editing the plugin file directly is a terrible idea. I didn’t test, but I suspect a better idea would be adding define( β€˜WPCF7_LOAD_JS’, false); to your wp-config.php file, so you don’t lose the modification after every plugin update.

    In case it helps anyone else, I resolved this by disabling plugins one by one until I found the plugin that was causing the conflict with CF7 (Root Relative URLs in my case).

    This wasn’t a CF7 issue, so the shade thrown at the CF7 developer by some comments is unwarranted IMO. It’s impossible to design a plugin that will work with all plugins. The pitfalls of an open-source community of plugins — some plugins will break other plugins. As is likely the case in this situation.

    1. Kolo Pius

      Very true Ryan. I just added a third permanent fix to this article and its disabling Ajax from the wp-config.php file.

  21. Gardener

    For me, it was a problem with PHP not having multibyte support. The second solution just caused an error page to be shown. After adding the multibyte support the form worked without and plugin changes.

    1. Kolo Pius

      I am glad you managed to fix it πŸ™‚

  22. Verena

    Thank you very much!

    1. Kolo Pius

      Much appreciated!

  23. sidharth sharma

    Worked for me Thanks !!!

    1. Kolo Pius

      I just added a third permanent fix to this article. Check it out! It will help you keep Ajax off even after updates.

  24. Briazi

    Legend Kolo!!!! Option 2 worked for me. Note that most devices worked just fine and I only used this to resolve some iPhones having the infinite spin problem : )

    1. Kolo Pius

      Appreciated man! I just added a third permanent fix to this article. Check it out! It will help you keep Ajax off even after updates.

  25. Rish

    I tried getting this to work, but I can’t find the javascript code for contactform 7.

    1. Kolo Pius

      It is among the very first lines of the wp-contact-form-7.php file. Let me know if you find any more issues locating it.

  26. Janet

    Method 2 worked for me (thank you) but if/when Contact form 7 has a plugin update, won’t this change get overwritten?

    1. Kolo Pius

      Hey Janet! When you make an update, it overwrites the changes you made. I have added a third permanent fix to this email. Check it out!

  27. TV

    Disabling the Ajax load worked for me as well, thank you!!

    1. Kolo Pius

      I am glad it worked. I have just added a third permanent fix to this article. Check it out πŸ™‚

  28. Steve Gerhart

    The second solution solved the spinning arrow for me, which will hopefully stop my potential customers from calling me and saying “it seems like your website is stuck”. I guess whenever there is an update to the plugin, I will have to reset it.

    The response e-mails were still not going out, and so I deactivated plug ins one by one, and the DB Backup plug in for contact us submissions was the culprit.

    1. Kolo Pius

      Hello Steve! I just added a third permanent fix to this article. Please implement it and never worry about the updates.

  29. Seb

    Great. Exactly what I was looking for. Thanks man !!

    1. Kolo Pius

      I am glad it helped! Cheers.

  30. Enzo

    Thank you so much! πŸ˜‰

    1. Kolo Pius

      Much appreciated πŸ™‚

  31. Hanan Khan

    In my case this occured because of Auto Optimize plugin Version 2.4.4 | By Frank Goossens (futtta).
    Disabling this plugin will solve the issue

    1. Kolo Pius

      Thanks for sharing this conflict. I have come to realize that so many plugins conflict with CF7 but sometimes we need them. I have updated the article with a third method that solves everything.

  32. Hafeez Piscalin

    Thank you very much I used the first method.

    1. Kolo Pius

      I am glad it worked for you πŸ™‚

  33. Juan

    Same case here but I found that the problem was not having https as the base url, so when I changed this the json and recaptcha erros I was watching in the Chrome Console dissappeared and started working fine. Working with the latest version, WordPress 5.3 with PHP 7.3 as requested.

    1. Kolo Pius

      I am glad you managed to sort it out. Cheers!

  34. Sisse

    Thank you!!I Changed the Permalink Structure to Default – it is good for now. But in a few days i will ad pages to my site and wish to keep the ‘post name’ structure.

    I have tried the JaveScript fix aswell – it works but gives be a strange url feedback. :/

    1. Kolo Pius

      Glad it worked! Cheers!

More FAQs

Share via
Copy link