ADMIN SIGN IN

Credit Cards and Refunds

When it comes to credit cards the very first thing to understand is that the payment that you receive is for your product or service, whether that is a registration for a car show, a club membership, a ticket, a t-shirt, or whatever else you are selling, however, in the payment system it is just a payment and it is not linked in any sort of virtual way to what it was used to purchase other than you seeing a name of something purchased and a name of a purchaser in the payments screen.

This is a really important concept for you to understand as you start to accept payments in Middletwin.

The reason it’s important is because if you refund a customers payment, or issue a partial refund, that only impacts the customers payment. You will still need to go into Middletwin and make any changes to the data that are needed to reflect the refund. For example, if a customer wants a refund for a car registration, and you go to payments and issue a refund, you will still need to go into the registrations for the event and delete the registration.

Testing

When you are setting up an event you will undoubtably want to test out the customer experience of registration. When doing this you can go into the Show Settings for the event and turn on test mode, its the first setting.

When you do this, and save the show settings, you will see on the landing page where all the icons are the words “This event is in test mode”

A clear indicator that the event is in test mode, and you will see on the public facing event panel that the event is in test mode

Test mode will allow you to run through the processes of registration, ticket purchases, and vendor/swap space purchases but will skip past the payment screen allowing you to complete everything without incurring a credit card charge.

If you also want to test out the credit card charge you can keep the test mode turned off in the show settings, however we ask that you do not use the credit card refund function to reimburse your self for any charges greater than $1, just write a check out from your club/event bank account to yourself.

Customer Refunds

Of course the customer always gets what they want, if the customer wants a refund on a credit card or a partial refund you need to do that without hesitation, but if your customer will accept a check refund or an exchange, you should try to offer that as well.

You can always put language in your purchase agreement policy for your event that all refunds will be in the form of a check that will be mailed out within 7-10 business days, most customers would be agreeable to terms like that.

Trying to avoid credit card refunds helps Middletwins merchant rating.

Confirmation Emails

Sending a professional looking confirmation email really helps to re-enforce that the purchase was successful and that your car show is professional. Fortunately this is very easy to do using Middletwin. There are multiple places within events to configure different types of confirmation templates, and there is a way to have one template for all purchases. The right configuration for your car show will be based on how you have Middletwin setup.

Pre-registration confirmation

If you are only pre-registering cars, then it makes senses to just create a single confirmation email template for pre-registration. To do this, first go to email->templates and create a new template that uses the “Event Registration Confirmation” as the base template. Edit the template to give it a professional look and refer to the Email template strings cheatsheet for placeholders you can use within your template.

After you are satisfied with your template, save it and go to your event->Show Settings and scroll down to the Participants Registration section and select your new template as the Response Template. Now any new online pre-registrations will receive an email using this template.

Ticket confirmation templates

If you are only selling tickets, then it makes sense to just create a template that can be used for all the ticket types, or if you have multiple ticket types with unique needs, you can create templates for each one. Ticket confirmation templates are assigned to each ticket type individually, giving you great freedom in designing custom templates to suit your needs.

As before, go to email->templates and create a new template, or multiple as needed, but this time use the Event Ticket Confirmation base template as a starting point. Again refer to the cheatsheet for placeholders.

After saving, go to your event->Tickets and in the ticket type setup select the Ticket confirmation template that you created in the previous step. You will need to do this for each ticket type, even if they all use the same template.

Vendor confirmation

If you are only selling vendor or swapper spaces using the map feature, then it makes sense to just create a template for vendor confirmation. Again go to email->templates, create a new template that uses Event Vendor Confirmation as a base template, refer to the cheatsheet for placeholders that you can use, and save.

In your event go to Maps and Vendors and open the settings for your map. Here you will see the Response Template setting, set this to your new template. If you have multiple maps you will need to set a template for each one, you can share a single template with all maps too, whichever makes sense for your needs.

Multi-confirmation

If you are selling any combination of pre-registrations, tickets, of vendor/swap spaces, and you don’t want to have the Middletwin system send multiple emails for each confirmation but rather one email with all the confirmations together, then you can do that. Note that setting this up will prevent any of the individual confirmations from being sent. Note that this does not include worker signup confirmations, they will be separate.

As with the previous setups you will start with the email->templates. Create a new template. Refer to the cheatsheet for the placeholders.

When you are done with the template, go to your event->Show Settings and locate the Purchase confirmation email template in the Event Information section. Set this to your Multi-confirmation template. Now this will be used for all purchases.

Links for your event

You will want to add links to your website that members of the public can use for

  • Pre-registering a car
  • Buying tickets
  • Purchasing vendor or swap spaces
  • Signing up to work one or more shifts

Middletwin makes this easy and provides for a seamless integration with your web site and the Middletwin system. When you setup your Middletwin account you picked a unique subdomain for your own Middletwin portal. To find out what the subdomain was you can go to the Administration tab from the mail Middletwin page and select the Member Portal icon

At the top of this page you will see “The url for your member portal is:” and below that will be your member portal. For the remainder of this instruction we will assume your subdomain is “acme”. This would make the url for your portal “acme.middletwin.com”. You can go to this url at anytime to see what your public facing portal looks like.

Option One – Link to The Event Panel

The url for your events landing page on the portal will be “acme.middletwin.com/portal/events“.

Here is an example of the panel for an event that is using all the capabilities of Middletwin, Pre-registrations, swapper signup, ticket sales, and volunteer scheduling.

You can modify nearly all the text that appears on this panel in the Show Settings. Note that there is also text that appears before the event, you can modify that too.

You can choose to just link to this URL from your web site.

Option Two – Link to Each Event Item

Alternatively you can link to the landing page for each item. To do this, click on each of the buttons to get the unique url for this event, for example, click on the “Register Now $x.xx” button (registration will need to be enabled and the start date will need to be set appropriately for it to be enabled). This will open the browser to the first step in the registration process.

The first step in the registration process

Take note of the url to this page in your browser. It should look something like this

acme.middletwin.com/portal/events/12/register

Especially note that number after events and before register, that is the event number and is unique for each event that you create in Middletwin, so this URL will not work for all events, only for the event you are working on, and will not work for future events.

You can add a link or a button with the words “Register Here” on your event web site, and have it link to this link.

In addition, when linking in this way, you can add a redirect to the URL to have it redirect to a page on your web site after the customer has completed the registration process. To do this, add the following to your url

?redirect=http://www.myevent.com/thankyou.html

This will redirect the user to a thankyou.html page on the web site www.myevent.com.

If you choose this method of linking, you will need to create links for all purchasing options on Middletwin on your web site.

Pages

PAGES IS BEING PHASED OUT AND IS ONLY IN MAINTENANCE MORE

Pages allows you to create custom html pages to use for the member portal landing page and for creating custom registration cards. To use pages you must have account admin permission. Pages will appear in the main menu on the left when you are logged into the admin portal. Click on this to go to the pages application. From here you will see a list of your current pages.

To add a new page click on the “Add page” button. This will open a dialog where you can select the type of page you want to add, web or registration.

After selecting the page type, a default page layout will be generated and will be opened up in the page editor.

Pages are made up of sections, you can think of these as rows, and elements, you can think of these as columns within the rows. All content is edited from the left hand panel. To add a section, click the “Add section” button. To delete a section, click the trash can icon in the section title bar. You can move sections up and down using the up and down arrows in the section title bar.

To edit content within a section, click on the section title bar to reveal the sections content.

Click on a modules title bar to reveal the modules settings

From here you can edit all of the modules content and styling. The changes you make here will be reflected in the preview in the right hand side. Use the “Add module” button to add additional modules. Click the arrow buttons in the module title bar to move the module left or right, use the trash can icon to delete a module.

Make sure to give the page a name that makes sense to you and save your changes when you are done.

To set a page as the landing/home page in the member portal, navigate to the Administration -> Portal page and select the Home Page you would like to use. “Build-in” is the default panels view.

To use a page as a registration card go to the event registrations, and select the “Dash card” for the registration you want to create a registration card for, then in the dialog select the registration card you would like to use.

The “Default/Built-in” option is the layout that works with pre-printed registration cards that use the Middletwin dash card layout.

Email template strings cheatsheet

When creating an email template you can use string replacement tags in the email template and these will be replaced with values from database fields. All string replacements use the pattern dollar sign – open curly brace – tag – close curly brace (ie ${tag}).

Here is an example

Hello ${fname},
Your member number is ${id}.

Dates – available in all email templates

  • ${fulldate} – Monday, January 1, 2025
  • ${longdate} – January 1, 2025
  • ${mediumdate} – Jan 1, 2025
  • ${shortdate} – 1/1/2025
  • ${date.year} – 2025
  • ${date.month} – (month number 1-12)
  • ${date.day} – (day of month 1-31)
  • ${monthname} – January, February, etc…
  • ${dayname} – Sunday, Monday, etc…

Member email (all)

  • ${fname} – member first name
  • ${lname} – member last name
  • ${name} – member full name
  • ${id} – member number
  • ${email} – member email address
  • ${expiration} – member expiration date
  • ${contact.firstname} – member first name
  • ${contact.lastname} – member last name
  • ${contact.name} – member full name
  • ${contact.email} – member email address
  • ${contact.address} – member address
  • ${contact.city} – member city
  • ${contact.state} – member state
  • ${cotnact.zip} – member postal code
  • ${contact.id} – member id
  • ${contact.expiration} – member expiration date

Member Expiring and expired email

  • ${fname} – member first name
  • ${lname} – member last name
  • ${name} – member full name
  • ${id} – member id
  • ${email} – member email address
  • ${expiration} – member expiration date

Event participant signup email

  • ${fname} – participant first name
  • ${lname} – participant last name
  • ${name} – participant full name
  • ${number} – participant registration number
  • ${class} – participant class number
  • ${email} – participant email address
  • ${phone} – participant phone number
  • ${address} – participant address
  • ${city} – participant city
  • ${state} – participant state
  • ${zip} – participant zip
  • ${make} – entry make
  • ${model} – entry model
  • ${year} – entry year
  • ${engine} – entry engine
  • ${color} – entry color
  • ${trim} – entry trim
  • ${option-[option id]} – the value of a registration option (get id from the registration options view)

Event shift worker signup email

  • ${fname} – worker first name
  • ${lname} – worker last name
  • ${name} – worker full name
  • ${email} – worker email address
  • ${phone} – worker phone number

Event vendor signup email

  • ${address} – vendor address
  • ${city} – vendor city
  • ${state} – vendor state
  • ${zip} – vendor postal code
  • ${phone} – vendor phone number
  • ${name} vendor name
  • ${number} – vendor number
  • ${email} – vendor email address
  • ${spaces} – a comma separate list of the spaces purchased

Event ticket confirmation

  • ${name} – the name of the purchaser
  • ${tickets} – list of links to ticket

Event Multi-confirmation

  • ${name} – customer full name
  • ${eventname} – the full event name
  • ${carNumbers} – comma separated list of registered car number
  • ${spaces} – comma separated list of all vendor/swap spaces
  • ${tickets} – list of all links to tickets

(do not use the multi-confirmation if you need more options)

Activity Reminder email

  • ${title} – the activity title
  • ${description} – the activity description
  • ${date} – the activity date
  • ${start} – start time
  • ${end} – end time

If you need something that is not on this list please contact support at support@middletwin.com.

Social

To get a list of social media posts use the following:

{
"action":"get_posts",
"limit":<number>,
"offset": <number>
}

A successful response will contain an array of posts in JSON format with each post item containing the following:

{
"media": <array of media>,
"post": {
"author":<string>,
"commentCount":<number>,
"created": <unix_timestamp>,
"edited":<unix_timestamp>,
"id":<number>,
"memberId":<number>,
"message":<string>,
"parentId":<number>
},
"reactions": <array of reactions>
}

Each media item will contain:

{
"id":<number>,
"imageData": <string: base 64 encoded image>,
"postId":<number>
}

Each reaction item will contain:

{
"id":<number>,
"memberId":<number>,
"postId":<number>,
"reaction":<number: reaction type index>
}

Create

A member can use the following POST request to create a social media post:

{
"action":"create_post",
"memberId":<number: the members id>,
"message":<string>,
"images":<array of images>
}

If this is a comment on a post, use the same data but add “parentId” with the id of the post that this is a comment for.

Update

A member can update their own post using the following request:

{
"action":"update_post",
"id":<number: post id to update>,
"memberId":<number: the members id>,
"message":<string>,
"images":<array of images>
}

Delete

A member can delete their own post using the following POST request:

{
"action":"delete_post",
"postId":<number>
}

Reactions

Create

You can create a reaction to a post using the following:

{
"action":"create_post_reaction",
"postId":<number>,
"memberId":<number>,
"reaction":<number: type of reaction>
}

Get

{
"action": "get_post_reactions",
"postId":<number>
}

Comments

Get

{
"action":"get_post_comments",
"postId":<number>
}

Note: Use the create post action to create comments by specifying a parentId in the request body.

Store

Purchasing store items should only be performed in the actual portal because a secure connection to the payment processing system, stripe, needs to be established. Please do not create your own interface for this.

Files

To display a list of shared files for members perform a post with the following data:

{
“action”:”get_media”,
“shared”: true
}

A successful response will contain an array of files with the following data:

{
"contentType":<string>,
"height":<number>,
"id":<number>,
"name":<string>,
"report":<boolean>,
"share":<boolean>,
"storageId":<number>,
"url":<string>,
"width": <number
}

Note that width and height only apply to image file type. The content type is a mime type.

Classifieds

Through the member portal API you can perform many operations on classifieds. A classified represents something that a member wants to sell to other members.

Get Classifieds

{
"action":"get_classifieds",
"limit": <number>",
"offset":<number>
}

A successful response will have an array of classifieds in JSON data format. Each classified contains the following data:

{
"created":<unix_timestamp>,
"deleted":null,
"description":<string>,
"fullCount":<number:total number of classifieds>,
"id":<number>,
"images": <optional: array of image data>,
"label":<string>,
"memberId": <number: id of member selling item>,
"price":<number>
}

If there are images each image item will contain the following:

{
"classified":<number>,
"id":<number>,
"imageData":<string: base 64 encoded image data>
}

Create

To create a classified perform a post with the following data:

{
"action":"create_classified",
"description":<string>,
"images": <optional: array of image data>,
"label":<string>,
"memberId": <number: id of member selling item>,
"price":<number>
}

If successful the API will return the id of the created classified.

Update

To update an existing classified perform a post with the following data:

{
"action":"update_classified",
"id":<number: id of classified to update>
"description":<string>,
"images": <optional: array of image data>,
"label":<string>,
"memberId": <number: id of member selling item>,
"price":<number>
}

Note that a member can only update a classified that they created. So this option should only be available of the memberId of the classified matches the id of the logged in member.

Delete

To delete an existing classified that the logged in member created, perform a post with the following data:

{
"action":"delete_classified",
"id":<number: id of classified to delete>
}

Getting another members info

Note that in the classified view a member may want to access the contact information for a member that is selling something. To perform this use the following action:

{
"action":"get_member",
"id":<number: id of member>
}

This should only be used when a member wants to view this data, not for every classified in an array.

Activities

Through the member portal the only activities action that the member can perform is a get_actvities. This action takes 2 parameters, start and end, which are until timestamps representing the start and end day to get the activities for.

{
"action":"get_activities",
"start": <unix_timestamp>,
"end": <unix_timestamp>
}

The successful response will have a JSON body with the key activities which will have an array of the activities to display. Each activity will have the following data:

{
"start": <time>,
"end": <time>,
"date": <unix_timestamp>,
"id":<unique id>,
"title":<string>,
"description":<string>
}

It would be typical to display this as a calendar view with next and previous month controls.

1 2 3 4 5
Privacy Settings
We use cookies to enhance your experience while using our website. If you are using our Services via a browser you can restrict, block or remove cookies through your web browser settings. We also use content and scripts from third parties that may use tracking technologies. You can selectively provide your consent below to allow such third party embeds. For complete information about the cookies we use, data we collect and how we process them, please check our Privacy Policy
Youtube
Consent to display content from - Youtube
Vimeo
Consent to display content from - Vimeo
Google Maps
Consent to display content from - Google
Spotify
Consent to display content from - Spotify
Sound Cloud
Consent to display content from - Sound