Overcoming Kajabi’s limited api webhooks and automations with a piped email automation

If you use Kajabi and you have wanted to setup some kind of external database to track progression and/or some kind external automation, you will find that the Kajabi API and the Kajabi Webhooks and the Kajabi Automations that they provide are limited in nature.

Problem: We wanted to provide a customized certificate (with their own name on it) after they had completed and passed 15 of our courses. Kajabi limitations mean that we could not accomplish this, and it would have to be tracked and done manually. Kajabi only allows for a generic certificate (not personalized) at the completeion of each course, and there was not way to do one certificate after the completion of multiple courses.

The solution then (I thought) would be to use Kajabi API or Webhooks to send an event (“user passed a course”) to an external database and then I can could create a custom script to check when they had passed all 15 courses, and then generate the certificate for them. However, neither the API nor the Webhooks allow you get information about users passing a course, so this was not going to work either.

Fortunately, kajabi’s automations had one “trick” that we could use to get the information we needed.

Solution: We ended up using an Automation of “Send Email” to a special email address that we created. This special email address uses a pipe to redirect the email directlu into a PHP program that will then parse the email, pull the information about user and course passed and then store that information in a database. So now we have an external database that tracks all courses passed by users, and I wrote another script that checks the database daily and looks for users that have passed all 15 courses, and then sends them a certificate.

So lets use example course called WIDGETS 101 with a FINAL EXAM ASSESSMENT:
– go to Marketing and then Automations and ADD NEW AUTOMATION
– select send the email TO MY TEAM and use special piped email address you setup like kajabi-workflow@mydomain.com
– customize the SUBJECT to: EXAM PASSED WIDGETS 101
– customize the BODY to: start|EXAM PASSED|WIDGETS 101|{{first_name}}|{{last_name}}|{{email}}|end
– APPLY the conidtion and SAVE the automation

The PHP script can now receive the email and parse the subject and body and get the info it needs to store in database.

Updating CiviCRM on WordPress

There are several steps when wanting to upgrade your CiviCRM install on WordPress. The official guide is here:

This is my simplified quick steps that work for me…

(1) Open browser and login to your CiviCRM install. Keep browser open during this entire process.

(2) Download most recent version of CiviCRM https://civicrm.org/download for WordPress onto your computer, and extract the civicrm folder from the zip/tar file.

(3) On your server, rename the /wp-content/plugins/civicrm folder to /wp-content/plugins/civicrmOLD

(4) On your server, move the /wp-content/plugins/civicrmOLD to /wp-content/civicrmOLD

(5) Upload the civicrm folder from your computer to your server into the /wp-content/plugins/ directory.

(6) Delete all the files in /wp-content/uploads/cicvcrm/templates_c/ directory.

(7) From browser, go to http://example.org/wp-admin/admin.php?page=CiviCRM&q=civicrm/upgrade&reset=1 to start the database upgrade.

(8) After complete, check that CivicCRM is working properly, and if it is you can then delete /wp-content/civicrmOLD folder and files.

Google Drive restricted file sharing still creates publicly accessible link – This is a critical security issue

I have come across a critical security issue with Google Drive file sharing.

When you set file sharing to “Restricted – Only people added can open with this link” then only people that you have specifically added should be able to view the document and they should be forced to login before they can view the document.

However, if you share the Restricted file with a non-Google email, you will get a poorly worded popup that asks you if you want to Share Anyway:

What is very unclear, is that if you click on Share Anyway, then a publicly accessible link is created that anybody can use to view the file now, even without logging in to Google.

And what is worse, is that the file status still shows as “Restricted: Only people added can open with this link” when in reality the file status should be changed to “Anyone with the link can view the file”.

This is a Critical Security issue.

When a file is set to RESTRICTED, it should only be viewable by those added that have a Google account to login with first, and should NEVER be viewable by anybody else even if they have the link.

Another -1 for Google ­čÖü

Here is thread on Stackoverflow:

Here is a link on the Google Issue Tracker:

How to convert Presearch tokens (PRE) to ETH (or BTC or cash) – PRE tokens

Presearch is working on a decentralized search engine: https://presearch.io/

Their crypto currency token is PRE

I have built up some PRE by using their search engine, and wanted to cash them out but found the process was not very easy because many exchanges do not accept PRE and therefore won’t exchanage it. So it took me several days to figure out how to do it.

Follow Presearchs own instruction by creating a wallet with My Ether Wallet (https://www.myetherwallet.com) and withdraw your tokens and send them to your new MEW wallet.

In order to exchange your PRE for something else, you will need to have some ETH in your MEW wallet to pay for the gas.
I found .005 ETH was a good minimum number.
You will need to purchase the ETH on another exchange and then send it to your MEW wallet.

NOTE: I recently noticed that CoinGetCoin.com website is no longer working. If you have alternative suggestion, please post in the comments.
You can then use CoinGetCoin to make the exchange (https://coingetcoin.com/#how-it-works).
You tell it how many PRE you will send, and it will tell you how many ETH you will get back.
I like this platform because you just send the PRE and it will automatically send ETH back to your wallet.
Specify the approximate amount of PRE you are going to send (does not need to be exact), and then specify the wallet address where you want the ETH sent after the exchange (I just sent it back to my MEW wallet).
CoinGetCoin will then give you a wallet address and you have 24 hours to send your PRE.
Be sure to note the minimum PRE that they will accept.

Go back to your MEW wallet and specify the address CoinGetCoin gave you, and send your PRE.
You can go back to CoinGetCoin and it will tell the progress (when it receives your PRE and when it sent the ETH back).
I have made a couple exchanges using CoinGetCoin and it took less than 30 minutes each time.

Now that you have ETH in your My Ether Wallet instead of PRE, you can do what you want with it.
For me, I sent it to my Coinsquare.com account and converted it to dollars and withdrew it to my bank account.

FREE codec for playing HEVC h.265 video on Windows 10

I was having an issue where my Windows 10 computer would not play HEVC h.265 video.

When you try to play the video, Windows Movies & TV app opens, but says it can not play it and that you need to purchase a $0.99 plugin from the Microsoft Store.

But there is actually a FREE version of codec that you can install/launch from the Microsoft Store as well (but of course they do not tell you about it).
Its called:

HEVC Video Extensions from Device Manufacturer

Alternate link:

Click the link above (its directly on Microsoft.com), choose GET, open the MICROSOFT STORE, choose INSTALL and then choose LAUNCH.
You do NOT need to sign up and do NOT need to create microsoft account to install this codec. Just skip/ignore any of those requests.

After this, try playing your HEVC h.265 videos with Windows Movies & TV app, and they should play!

Shopify: How to add External Link Buy Now button and remove Add To Cart button

I have some products (eBooks) that are only available to purchase on Amazon so I needed a way to add a BUY NOW ON AMAZON button and also needed to remove the ADD TO CART button.

This solution requires an App that lets you add custom Metadata Fields to your products. I tested a few different free ones, and ended up going with Simple Admin https://apps.shopify.com/simple-meta

This solution also requires adding some custom code to your theme. In this example I am using the free theme called SIMPLE.

Add and install the Simple Admin app to your Shopify store.

Once installed, go to your Apps section and click on Simple Admin to go to its dashboard.

Click on PRODUCTS over in the top right corner.

Choose the product you want add the Buy Now External Link button too, and click the ID number of that product.

Click on the META tab.


Enter the following information:
KEY: BuyNowText
VALUE: BUY NOW on Amazon.com
NAMESPACE: CustomExternalLink
DESCRIPTION: The value is the text the customer will see on the button.
Click SAVE.

Click ADD METAFIELD again.

Enter the following information:
KEY: BuyNowLink
VALUE: https://anydomain.com/some/link/to/product
NAMESPACE: CustomExternalLink
DESCRIPTION: Enter external link in the value field. To disable external link, enter the word “none” (without quotes) in the value field.
Click SAVE.

Now go to ONLINE STORE then THEMES then click on ACTIONS for your current theme and choose EDIT CODE.
NOTE: I am using the free SIMPLE theme.

Locate the SECTIONS / PRODUCT-TEMPLATE.LIQUID file and click on it so the file opens up in the editor.
NOTE: The following code that I am going to modify is specific to the SIMPLE theme and is located in the SECTIONS / PRODUCT-TEMPLATE.LIQUID file. The code you are looking for may be slightly different if you are using a different theme, and may also be located in a different file. Another file to check for the code would be the TEMPLATES / PRODUCT.LIQUID file.

Look for the following code:

<div class="product-single__cart-submit-wrapper{% if section.settings.enable_payment_button %} product-single__shopify-payment-btn{% endif %}{% if section.settings.add_to_cart_width == 'full_width' %} product-form--full{% endif %}">
  <button type="submit" name="add" id="AddToCart" class="btn product-single__cart-submit{% if section.settings.add_to_cart_width == 'full_width' %} btn--full{% endif %}{% if section.settings.enable_payment_button %} shopify-payment-btn btn--secondary{% endif %}">
    <span id="AddToCartText">{{ 'products.product.add_to_cart' | t }}</span>
  {% if section.settings.enable_payment_button %}
    {{ form | payment_button }}
  {% endif %}

Replace the code above with this code:

{% comment %}
  MOD by Jeff - Wrapped the DIV with the IF-ELSE statement to show External BUY NOW button.
              - When link is found, the ADD TO CART and BUY NOW buttons will disappear and this button will show instead.
              - Use Simple Admin app to add custom metafields.
              - NAMESPACE: CustomExternalLink
              - KEY: BuyNowLink = enter http link to external site or the word "none" without quotes to disable
              - KEY: BuyNowText = the text you want customer to see
{% endcomment %}
{% if product.metafields.CustomExternalLink.BuyNowLink == blank or product.metafields.CustomExternalLink.BuyNowLink == 'none' %}
<div class="product-single__cart-submit-wrapper{% if section.settings.enable_payment_button %} product-single__shopify-payment-btn{% endif %}{% if section.settings.add_to_cart_width == 'full_width' %} product-form--full{% endif %}">
  <button type="submit" name="add" id="AddToCart" class="btn product-single__cart-submit{% if section.settings.add_to_cart_width == 'full_width' %} btn--full{% endif %}{% if section.settings.enable_payment_button %} shopify-payment-btn btn--secondary{% endif %}">
    <span id="AddToCartText">{{ 'products.product.add_to_cart' | t }}</span>
  {% if section.settings.enable_payment_button %}
    {{ form | payment_button }}
  {% endif %}
{% else %}
  <a href="{{ product.metafields.CustomExternalLink.BuyNowLink }}"><button class="btn" style="background-color:black; pointer-events: none;"><span>{{ product.metafields.CustomExternalLink.BuyNowText }}</span></button></a>
{% endif %}
{% comment %}
  END MOD by Jeff
{% endcomment %}

Click SAVE.

Go view your product and you should see the new BUY NOW button has been added and the ADD TO CART button has been removed.



CallCentric VoIP Phone Provider Review

CallCentric VoIP Phone Provider Review

CLICK HERE for Official Site of CallCentric VoIP Phone Provider Review

If you are looking for a great VoIP company, I want to highly recommend CallCentric VoIP Phone Provider Review in this review.

They have very competitive prices, awesome service, and most importantly you can sign up for a FREE account and make unlimited free calls to other CallCentric customers for life.

VoIP stands for Voice Over Internet Protocol and basically means that CallCentric is phone service provider that uses the internet to make calls instead of using traditional copper phone lines. This results in huge savings on your monthly phone bill, especially when it comes to international long distance.

CLICK HERE for Official Site of CallCentric VoIP Phone Provider Review

For your personal phone, they can help you get up and running quickly with either your own device (BYOD) or can recommend different devices that have been tested with their service. And for business, they can help you with a simple single phone setup or with a complex PBX or Asterisk Server. They have several plans to choose from including pay-as-you-go and unlimited calling plans, and you can also choose your own phone number from a variety countries.

They have now also added new features such as IVR (automated attendants), SMS, multiple extensions, and more!

You have nothing to lose by trying their FREE service (no credit card required), so sign up today and you will not regret it!

From their website:

┬áImagine you have a phone number so callers can reach you whether you’re near or far; walking with a mobile phone, at home or the office, using VoIP or a regular phone line. And even more, this number is not in the country where you live.

Sign up now for CallCentric VoIP Phone Provider Review and try it before you buy it for free.

CLICK HERE for Official Site of CallCentric VoIP Phone Provider Review