Support » Plugin: Contact Form 7 - Conditional Fields » Merge or simplify group output

  • Hi dev

    Trying to simplify the output of a form to connect to both Mailchimp and Salesforce CF7 plugins.

    Form snippet

    <label class="country"> Country [select COUNTRY "Select One" "United States" "Australia" "New Zealand" "Canada" "Other"]</label></div>                                                                       <div class="column-half"> [group us]<label> State [select STATE-US "Alabama" "Alaska" "Etc" ] </label>[/group]
            [group au]<label> State [select STATE-AU "New South Wales" "Queensland" "Etc" ] </label>[/group]                                                                                                    
            [group nz]<label> State [select STATE-NZ "Canterbury" "Otago" "Etc" ]</label>[/group]                                                                                                       
            [group ca]<label> State [select STATE-CA "Alberta" "British Columbia" "Etc" ]</label>[/group]                                                                                                              
            [group other]<label> Please Specify [text othercountry] </label>[/group]                                                             
            [group so]<label> State [select selo "Please Select Country"] </label>[/group]

    Email snippet

    <strong>Country:</strong> [COUNTRY]
    [other] <strong>Other Country:</strong>  [othercountry] [/other]
    <strong>State:</strong> [us] [STATE-US] [/us][au] [STATE-AU] [/au][nz] [STATE-NZ][/nz][ca] [STATE-CA][/ca]

    That last line is the complicated one we need to simplify so we can feed it into the other systems. Is there a way we can condense the output of that line into a new single variable we can pass through to the others?

    The country field is easy, but based on the chosen country, the state could come from [STATE-US], [STATE-AU], [STATE-NZ] etc. We need to be able to map a single output of STATE = ChosenState. Hope that makes sense.

    • This topic was modified 4 months, 1 week ago by joeldude. Reason: clarification
Viewing 7 replies - 1 through 7 (of 7 total)
  • Plugin Author Jules Colle


    That makes a lot of sense. You are touching one of the pain points that I have been struggling with to make a decision about.

    The “allow the same field names” VS “don’t allow the same field names” problem..

    I’m really thinking about rewriting the plugin to allow the same field names. The main problem is, that a lot of other CF7 plugins assume that a field, say “my-text”, will be actually posted as “my-text”. However, if I would allow different field names, this implies that the fields would have to be renamed to “my-text-1” and “my-text-2” when submitting the form. (HTML standards define that you cannot send a form with the same field name twice. One will always overwrite the other.)

    So, another way to solve this would be to only send the fields that were visible during submission. But this again comes with some additional problems. Like, what if someone uses the plugin for multistep-purposes, hiding some of the information after it is completed by the user, to clear some clutter, .. There’s just so many use cases, and it’s hard to change my initial design while keeping all the previous forms compatible with the new design.. I dunno..

    Please let me know if you have any thought or suggestions. The main question: How do you think, can I solve your problem, without breaking the plugin for other people?

    PS: sorry for turning the support question around and throw it back at you XD


    I appreciate your candor. I was hoping for an easy solution because we’re so close to our goal.

    I wonder if there is a way of wrapping the group of states ([STATE-US], [STATE-AU], [STATE-NZ] etc) in a parent group, say [STATEPARENT], then this parent group when called in the output would only spit out the selected child element, or STATE value.

    Then we could say “country-field” = [COUNTRY], “state-field” = [STATEPARENT]
    Basically [STATEPARENT] does the work of <strong>State:</strong> [us] [STATE-US] [/us][au] [STATE-AU] [/au][nz] [STATE-NZ][/nz][ca] [STATE-CA][/ca]


    Plugin Author Jules Colle


    I don’t think it’s possible without some custom JS. This similar might get you on your way:

    I might have another idea, but before I can suggest that I need to know if this would be valid syntax:

    "state-field" = [STATE-AU][STATE-NA][STATE-CA]

    Sorry, I haven’t worked with the plugins you mentioned yet, so don’t know what they allow or not.



    "state-field" = [STATE-AU][STATE-NA][STATE-CA]

    This is the logic I need, but this won’t be accepted by either of the other plugins. Each plugin is basically talking to a database/spreadsheet, so each cell is looking for a single field to map to.

    So this is what I think we need.

    Lead’s Country = [COUNTRY]
    Lead’s State = [STATEPARENT]

    Where in CF7 conditional fields [STATEPARENT] = [us] [STATE-US] [/us][au] [STATE-AU] [/au][nz] [STATE-NZ][/nz][ca] [STATE-CA][/ca]

    This way your plugin can spit the result of multiple fields into a single variable “STATEPARENT”, which then can be passed through to the State field in Mailchimp / Salesforce plugins.

    Plugin Author Jules Colle


    You might be able to create a hidden field and populate it with this extension:

    But honestly, I would (hire someone to) write a custom piece of javascript that combines the field values into a single hidden field onSubmit. It should be fairly simple if you know how.



    Can you point me in the right direction here? We keep having the issue.
    The developers of the other plugins have looked at it, but say the conditional fields variables work in submissions and mail, but not for their plugins.

    Plugin Author Jules Colle


    You best bet would be to hire someone. I’m not going to advertise anyone here, but I suggest you google something like “hire wordpress developer”. I swear it’s not hard to write some custom js that will do the trick. shouldn’t take an experienced developer more than 2 hours to implement

Viewing 7 replies - 1 through 7 (of 7 total)
  • You must be logged in to reply to this topic.