BlogCall Today 866-313-0106

Use Gravity Forms to Capture Refferal URLs

Gravity Forms is a popular contact form plugin for WordPress. A ton of sites are already using Gravity forms to handle all contact forms. Its super easy to use and seems to be the go-to choice for many site owners.

Recently, I built a contact form for a client site that sells tickets to dozens of plays and broadway shows. Our client was receiving a large number of emails asking if tickets were available for a show. The problem was, the customer never mentioned which show he/she wanted to attend.

The need: Answer questions from prospective customers looking to purchase tickets.

The catch: Use only one form, but somehow pass along what page or show the customer is inquiring about.

The fix? The Gravity Forms {referer} merge tag used as a hidden field in our form. We pass the source page URL to the form and print it alongside the data submitted by the customer so that our client knows exactly which page the customer was viewing when he/she submitted the contact form.

Here’s how it works:

In your Gravity Form, add a hidden field. This field won’t display for your users, but its content will display when submitted both when emailed to the administrator, and when stored in the backend list of form entries.
Name your hidden field Source URL or Referral Page, or whatever makes sense for your form. Click the Advanced Tab and find the Default Value field. Use the merge tag dropdown to the right to select the HTTP Referer URL tag. Save your form. Thats it!


Ready to test it out? Embed a link to the page containing your form on another page on your site. Click that link to access the form and fill it out. When you review the entries submitted for that form, you will see the URL in the last column under Referral Page. Now you’ll know exactly which page the user was reviewing when they filled out your form.

Virtual Offices Are Not Very Remote After All

It’s funny.  I still sometimes get that boyhood jealousy of the kid playing hookie when one of my friends says “I’m working remotely tomorrow.”  There is this implication of being off the reservation, out there on your own, left to your own devices and personal freedoms with no one looking over your shoulder.  Why is this funny?  Because I work from home every day of my life.

The Virtual Office

Here’s the difference: I work in a virtual office.  A virtual office is nothing like what my friend above might describe as working remotely.  I know this seems somewhat counter-intuitive but it really boils down to this – in a virtual office, everyone is in the same place and no one is remote.

To say that I was pleasantly surprised at how true this turned out to be for us would be a gross understatement.  I am Director of Operations and Sr. Project Manager for a small custom web development shop and things like accountability, fostering culture and collaboration, ensuring sound business process etc., are my universe.  They are also commonly assumed to be less effective in a virtual office environment.  Yes, we were nervous about these things too.  Now with a year behind us since the “move,” I’m pretty sure it was the best ops strategic call we’ve ever made.

The Definition of Remote

The problem with remote is, incidentally, right in the name.  You really are classic-definition-of-the-word,  “remote.”  You’re out there in orbit (read: Starbucks), on your own and maybe you’ve even got a list of things you need to get done, but either way your normal communications process is broken.  You don’t talk to folks in the office like you normally would and they consider you a lesser employee who doesn’t need to be included in whatever conversation or decision is happening in the office.

The number one biggest single factor at play here is that when in a virtual office done correctly, everyone is truly in the same “place” even if they are separated by vast distances.  I feel far less remote than I did when we had an office.  Our ability to communicate and collaborate has increased and our ability to nail client deadlines has improved.  Both client and employee satisfaction are through the roof these days.

Stay tuned as I continue to explore the various facets of a successful virtual office as well as the benefits we’ve been experiencing.

Next Topics:

  • Addressing the Common Concerns
    • Laziness
    • Lack of collaboration
    • Loneliness
    • Communications breakdown
  • Ways to be successful
    • Have a routine
    • Have an office
    • Go out
    • Video conf, every once in a while
    • Play games, social skype
    • Use the internet and its humor
  • Our Transition: A Case Study
  • Why it’s not for everyone and every company
  • Virtual office tools that helped our success
  • Fostering culture over the internets
  • Project management and other process in a virtual environment
  • Hiring

Recover Deleted GIT Commits

Have you ever force-deleted a branch from GIT by accident? Of course, it confirms with you first, but chances are you were deleting other branches, too, and this one got in the way. Luckily for you, it’s possible to retrieve these missing commits.

If you’re using GIT Extensions, you can use the GUI to accomplish the work. To do so, click on Repository > Git maintenance > Recover Lost Objects…

Recover Deleted GIT Commits

Recover lost objects is a feature of Git that will locate dangling commits – commits without a reflog. You can also accomplish the below by running git fsck utility with the –full option.

Ordinarily GIT will remove these lost objects every two weeks through garbage collection. This means you have a limited window of time to recover anything you’ve lost. A helpful dialog will show while Git combs your local repository for dangling commits:

Recover Deleted GIT Commits

Once completed, you’ll see about two weeks-worth of sortable dangling commits:

Recover Deleted GIT Commits

You can check any number of commits that you want to recover. I’ve selected just one from the list. When you’re sure you’ve found the one you want to recover, click on [Recover selected objects].

You’re not done yet, though! You still have to find a place to put the now recovered commit. Close the dialog to see the commit you’ve recovered. Unfortunately it is based on the original date, so you may have to scroll back pretty far:

Recover Deleted GIT Commits

Once you’ve located your missing commit, all you have to do is create a branch at that commit, and you’ve recovered your data!

Recover Deleted GIT Commits

Critical Linux Server Security Issue Discovered

A critical security vulnerability has just recently been discovered in the Linux operating system. This may affect any website that is being run on a Linux server which hasn’t been patched. You can read more about it below:

Within 24 hours of the vulnerability becoming public DLS Software Studios took immediate action to either patch our client’s servers or to notify them and make recommendations about what needed to be done.

Is your internal software development team or outside agency keeping up with critical security risks and taking the necessary steps to mitigate them before your entire business is at risk?

SSL now a ranking criteria on Google

Google has recently announced that they have started and will continue to rank sites that use SSL throughout the site higher than sites that don’t.  Aside from the obvious security reasons for implementing SSL on pages with protected data, this raises a strong argument for implementing SSL or increasing your use of SSL if you don’t already use it on all pages of your site.

We are recommending that all of our clients move forward with a full implementation of SSL.  If you are unsure what SSL is or how you would go about implementing it on your site, feel free to reach out to us at 866-313-0106 to discuss your options.

You can read more about this move here:


Easy Insert with ASP.NET 2.0

Using ASP.NET 2.0 makes inserting information from web user interfaces to a database a snap. Based on the 3-tier software architecture paradigm, an explanation and example of how to accomplish this task is below. The example will start with a simple data model you can use to insert the sample data. Next, there will be a proposed interface design to support the database. An example of how the ASP.NET code behind the interface can be set up to handle the data pass and lastly, a single line of code written to execute the passing of data from the ASP layer to the database.

First, construct a simple database using some ADO compatible database software such as MS SQL or Access. For the purpose of our example we will construct a model based on the following design.

Name Text
Age Integer
Gender Integer

Next, create an interface to support the data model. This example uses Visual Basic as the programming code by which the data insert operation is executed. Similar results may be accomplished using another language such as C#. A text box control is suggested for the name field. A populated drop-down list is suggested for age, and a radio button list is suggested for the gender field. Also, a button should be added for the end-user to click as a trigger to perform the actual insert.

Don’t forget to add a SQL DataSource Control; configure it to include insert capabilities in advanced mode and include all the fields from the database. An example could look like:

<form id="form1" runat="server">
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <asp:DropDownList ID="DropDownList1" runat="server">
        <asp:ListItem Text="18-25" Value="0" />
        <asp:ListItem Text="26-32" Value="1" />
        <asp:ListItem Text="33-40" Value="2" />
    <asp:RadioButtonList ID="RadioButtonList1" runat="server">
        <asp:ListItem Text="Male" Value="0"></asp:ListItem>
        <asp:ListItem Text="Female" Value="1"></asp:ListItem>

Now, in the ASP.NET interface layer, assign the appropriate parameters to the appropriate fields.

<asp:SqlDataSource ID="SqlDataSource1" runat="server">
        <asp:ControlParameter Name="Name" ControlID="TextBox1"
            PropertyName="Text" Type="Char" />
        <asp:ControlParameter Name="Age" ControlID="DropDownList1"
            PropertyName="SelectedValue" Type="Int32" />
        <asp:ControlParameter Name="Gender" ControlID="RadioButtonList1"
            PropertyName="SelectedValue" Type="Int32" />

This code observes the contents of the controls named in the ControlID tags and points them in the direction of the database’s ControlParameter Name which specifies where in the database the information should go. Of course, data types are specified in Type and PropertyName is the control property from which the information should be extracted.

Now, here comes the fun part – a single line of Visual Basic to handle the pass from ASP.NET to the database. Simply double-click the button created in the user-interface, and add this line:


If all went as intended, the project executes and the user should be able to type in their name to the text box on the interface, select their age from the drop down list, select their gender from the radio buttons, click to submit and (voila!) the information is inserted into the database build from the initial data model.

This is one example of how more advanced versions of ASP.NET reduce development time. The ease with which data-driven applications may be constructed using these tools and supporting technologies is a testament to rapid application development techniques as they are applied to the web.