<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Elli</title>
    <description>The latest articles on Forem by Elli (@elli).</description>
    <link>https://forem.com/elli</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F838740%2F1c69f7e9-f608-4cd3-9e84-35a75c688907.jpeg</url>
      <title>Forem: Elli</title>
      <link>https://forem.com/elli</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/elli"/>
    <language>en</language>
    <item>
      <title>4 free APIs you should know about</title>
      <dc:creator>Elli</dc:creator>
      <pubDate>Thu, 28 Jul 2022 09:21:22 +0000</pubDate>
      <link>https://forem.com/elli/4-free-apis-you-should-know-about-57ce</link>
      <guid>https://forem.com/elli/4-free-apis-you-should-know-about-57ce</guid>
      <description>&lt;p&gt;In a world that is flooded with offers, you often have to fight your way through a jungle of choices to pick the best one. To help you select tools, I present some free APIs today. These outstanding APIs help you optimize your processes and improve your KPIs and customer experience while being completely free.&lt;/p&gt;

&lt;p&gt;A great API should include comprehensive documentation, feature completeness, flexibility, consistency, and simplicity. With that in mind, let's look at some great free APIs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Freecurrencyapi
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://freecurrencyapi.com/"&gt;freecurrencyapi.com&lt;/a&gt; is a currency exchange API that offers live and historical rate data from 1999 until today. The API is lightweight and easy to use, providing data for 32 world currencies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key features:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;three endpoints: live, historical, and time range&lt;/li&gt;
&lt;li&gt;32 currencies&lt;/li&gt;
&lt;li&gt;5.000 free requests&lt;/li&gt;
&lt;li&gt;daily updates&lt;/li&gt;
&lt;li&gt;comprehensive documentation&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  freeiplookupapi
&lt;/h2&gt;

&lt;p&gt;If you are in need of a IP geolocation API, &lt;a href="https://freeiplookupapi.com/"&gt;freeiplookupapi.com &lt;/a&gt; might be the right one for you. Built from developers - for developers, the API provides IP information like country, city, time zone, latitude, and longitude.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key features:&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;IP detection&lt;/li&gt;
&lt;li&gt;IP lookup&lt;/li&gt;
&lt;li&gt;Geo-fencing&lt;/li&gt;
&lt;li&gt;50.000 Requests/Hour&lt;/li&gt;
&lt;li&gt;IPv4 &amp;amp; IPv6 Support&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  image-charts
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.image-charts.com/"&gt;Image-charts.com&lt;/a&gt; offers an easy solution for embedding image charts for emails, blog posts, PDFs, and markdown files. It is easy to set up with a 100% uptime over the past 14 months.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key features:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Unlimited chart generation&lt;/li&gt;
&lt;li&gt;Sub-second request latency&lt;/li&gt;
&lt;li&gt;WebP and Gif support&lt;/li&gt;
&lt;li&gt;Worldwide CDN&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Random API
&lt;/h2&gt;

&lt;p&gt;When developing an application, you have to implement user authentication. This is where &lt;a href="https://randomapi.com/"&gt;randomapi.com&lt;/a&gt; comes in. The API provides you with information about random fake users. This includes names, genders, emails, phone numbers, and addresses. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Features:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;JSON, XML, CSV, or YAML output&lt;/li&gt;
&lt;li&gt;documentation&lt;/li&gt;
&lt;li&gt;500 daily results&lt;/li&gt;
&lt;li&gt;256 KB list data&lt;/li&gt;
&lt;li&gt;60/120/5 Cache settings&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>api</category>
      <category>tips</category>
      <category>tooling</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Building a Phone Number Verificator with JavaScript</title>
      <dc:creator>Elli</dc:creator>
      <pubDate>Tue, 07 Jun 2022 09:00:14 +0000</pubDate>
      <link>https://forem.com/elli/building-a-phone-number-verificator-with-javascript-8ai</link>
      <guid>https://forem.com/elli/building-a-phone-number-verificator-with-javascript-8ai</guid>
      <description>&lt;p&gt;There is little more annoying than running a business and not being able to contact (potential) customers. For emails, we have a common way to ensure the validity of addresses by simply sending a verification link. But what can we do about phone numbers? There is one sure way to validate phone numbers, and that is by using a number verifier for your contact form.&lt;br&gt;
In this tutorial, I will show you how to build one with JavaScript in just a few simple steps. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uq7uSmxg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e7wt3xbi262419wdxv42.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uq7uSmxg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/e7wt3xbi262419wdxv42.png" alt="This is what our number verificator will look like" width="880" height="353"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Why build a phone number validator?
&lt;/h2&gt;

&lt;p&gt;Phone number validation is essential for capturing high-quality customer contact data and fraud prevention. If you want to ensure that your data is top-notch, a phone number validation API will be beneficial.&lt;/p&gt;

&lt;p&gt;With a phone number verification API, you can keep your database clean. The API helps you automate your phone number lookup and validation process by pulling information from a global dataset. It allows you to capture and focus on good leads while keeping your registration forms spam-free and fighting fraud. &lt;/p&gt;
&lt;h2&gt;
  
  
  How to build a number verifier with JS
&lt;/h2&gt;

&lt;p&gt;Before starting the tutorial, make sure you are working with the right tools. Our development stack should look something like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://classic.yarnpkg.com/en/docs/getting-started"&gt;Yarn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://vitejs.dev/guide/"&gt;Vite&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Tailwind CSS&lt;/li&gt;
&lt;li&gt;postcss&lt;/li&gt;
&lt;li&gt;autoprefixer&lt;/li&gt;
&lt;li&gt;numlookupapi&lt;/li&gt;
&lt;li&gt;Vanilla JavaScript&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is, of course, just a suggestion. You can replace whatever you want to a stack you are more comfortable with. &lt;/p&gt;

&lt;p&gt;Once the preparation is done, we can get started!&lt;/p&gt;
&lt;h3&gt;
  
  
  1. Initializing a Vite Project
&lt;/h3&gt;

&lt;p&gt;The first step is initializing a Vite project in our development workspace:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;yarn create vite&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;We now get asked for a project name, so choose whatever you want. We will also be asked to select a framework. Since we want to use plain JavaScript, we select vanilla (twice).&lt;/p&gt;

&lt;p&gt;We can now switch into the newly created directory (as suggested by the console), but &lt;strong&gt;do not start&lt;/strong&gt; the yarn build quite yet.&lt;/p&gt;
&lt;h3&gt;
  
  
  2. (Optional) Styling setup
&lt;/h3&gt;

&lt;p&gt;We will use &lt;a href="https://tailwindcss.com/"&gt;Tailwind CSS&lt;/a&gt; for easy styling, combined with autoprefixer &amp;amp; postcss for a smooth development experience. To do so, we install these packages:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;yarn add -D tailwindcss postcss autoprefixer&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;After that, we can initialize tailwind, which will create a config file (tailwind.config.js):&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npx tailwindcss init&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Now, we need to adapt this new config to work with our Vite project setup:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;module.exports = {
 content: [
   './main.js',
   './index.html',
 ],
 theme: {
   extend: {},
 },
 plugins: [],
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To include Tailwind CSS, we add the following lines at the top of our style.css:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;@tailwind base;&lt;br&gt;
@tailwind components;&lt;br&gt;
@tailwind utilities;&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
And for postcss, we need to create a config file named &lt;code&gt;postcss.config.js&lt;/code&gt; in our root directory and add the following lines:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;module.exports = {
    plugins: [
        require('tailwindcss'),
        require('autoprefixer')
    ]
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. Starting vite in dev mode
&lt;/h3&gt;

&lt;p&gt;Now that our preparations are complete, we can start vite to serve our files with hot reloading:&lt;br&gt;
&lt;code&gt;yarn dev&lt;/code&gt;&lt;br&gt;
This should automatically open up a new tab in your browser. If not, open &lt;code&gt;http://localhost:3000/&lt;/code&gt; in any browser.&lt;br&gt;
You should now see the default Vite index page reading &lt;code&gt;Hello Vite!&lt;/code&gt;.&lt;/p&gt;
&lt;h3&gt;
  
  
  4. Preparing our HTML
&lt;/h3&gt;

&lt;p&gt;Next, we need to adapt the default landing page.&lt;br&gt;
We, therefore, open the index.html and build a form for phone number validation. For this, we need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;A wrapper to hold our input: &lt;code&gt;&amp;lt;form id="phone_number_validator"&amp;gt;&lt;/code&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;An input for the phone number: &lt;code&gt;&amp;lt;input id="base_currency_input"&amp;gt;&lt;/code&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A submit button: &lt;code&gt;&amp;lt;button type="submit"&amp;gt;&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A container where we display our response from the API: &lt;code&gt;&amp;lt;div id="result"&amp;gt;&lt;/code&gt; &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here is what our implementation of the index.html looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang="en"&amp;gt;
&amp;lt;head&amp;gt;
    &amp;lt;meta charset="UTF-8"/&amp;gt;
    &amp;lt;link rel="icon" type="image/svg+xml" href="favicon.svg"/&amp;gt;
    &amp;lt;meta name="viewport" content="width=device-width, initial-scale=1.0"/&amp;gt;
    &amp;lt;title&amp;gt;Phone number validator&amp;lt;/title&amp;gt;
&amp;lt;/head&amp;gt;
&amp;lt;body class="bg-gradient-to-b from-cyan-800 to-slate-800 min-h-screen py-5"&amp;gt;
  &amp;lt;form
    id="phone_number_validator"
    class="mx-auto w-full max-w-sm bg-white shadow rounded-md p-5 space-y-3 text-sm"&amp;gt;
&amp;lt;div class="flex items-center space-x-5"&amp;gt;
    &amp;lt;label for="phone_number"&amp;gt;Phone Number:&amp;lt;/label&amp;gt;
    &amp;lt;input
            type="tel"
            id="phone_number"
            name="phone_number"
            placeholder="+123456789"
            value=""
            class="grow border-slate-300 border rounded-md py-2 px-4 text-sm"
            required
        /&amp;gt;
    &amp;lt;/div&amp;gt;
    &amp;lt;button
        type="submit"
        class="bg-slate-800 text-white rounded-md py-2 px-4 mx-auto relative block w-full"
    &amp;gt;Validate
    &amp;lt;/button&amp;gt;
  &amp;lt;/form&amp;gt;
  &amp;lt;div
    id="result"
    class="mx-auto my-5 w-full max-w-sm bg-white shadow rounded-md relative overflow-hidden text-sm empty:hidden divide-y divide-dotted divide-slate-300"
  &amp;gt;&amp;lt;/div&amp;gt;
&amp;lt;script type="module" src="/main.js"&amp;gt;&amp;lt;/script&amp;gt;
&amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;All CSS classes are tailwind specific. Feel free to remove them entirely if you want to style it yourself or use another CSS framework.&lt;/p&gt;

&lt;p&gt;We will use the id attributes in our JavaScript.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Handling form submission in JavaScript
&lt;/h3&gt;

&lt;p&gt;In our main.js, we read the data from the input and send it to the number validation API. For this, we need an API key. In this tutorial, we use &lt;a href="https://numlookupapi.com/"&gt;numlookupapi.com&lt;/a&gt; (they offer a free plan). The main.js could look something like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import './style.css'

const phoneNumberValidator = document.getElementById('phone_number_validator');
const phoneNumberInput = document.getElementById('phone_number');
const resultContainer = document.getElementById('result');

phoneNumberValidator.addEventListener('submit', (e) =&amp;gt; {
    e.preventDefault();

    fetch(`https://api.numlookupapi.com/v1/validate/${phoneNumberInput.value}`, {
        headers: {
            apikey: 'YOUR-API-KEY'
        }
    })
        .then(response =&amp;gt; response.json())
        .then(data =&amp;gt; {
            if (data.message) {
                resultContainer.innerHTML = `&amp;lt;div class="px-5 py-3 border-2 rounded-md border-red-500 text-600 px-5 py-3"&amp;gt;${data.message}&amp;lt;/div&amp;gt;`
            } else {
                const borderClasses = data.valid ? 'border-green-500' : 'border-red-500';

                resultContainer.innerHTML = `&amp;lt;div class="space-y-1 px-5 py-3 border-2 rounded-md ${borderClasses}"&amp;gt;
                        &amp;lt;div class="flex items-baseline justify-between"&amp;gt;&amp;lt;span class="font-medium"&amp;gt;valid:&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;${data.valid}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;
                        &amp;lt;div class="flex items-baseline justify-between"&amp;gt;&amp;lt;span class="font-medium"&amp;gt;Carrier:&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;${data.carrier}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;
                        &amp;lt;div class="flex items-baseline justify-between"&amp;gt;&amp;lt;span class="font-medium"&amp;gt;Country:&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;${data.country_name}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;
                        &amp;lt;div class="flex items-baseline justify-between"&amp;gt;&amp;lt;span class="font-medium"&amp;gt;Country Code:&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;${data.country_code}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;
                        &amp;lt;div class="flex items-baseline justify-between"&amp;gt;&amp;lt;span class="font-medium"&amp;gt;Country prefix:&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;${data.country_prefix}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;
                        &amp;lt;div class="flex items-baseline justify-between"&amp;gt;&amp;lt;span class="font-medium"&amp;gt;International format:&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;${data.international_format}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;
                        &amp;lt;div class="flex items-baseline justify-between"&amp;gt;&amp;lt;span class="font-medium"&amp;gt;Local format:&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;${data.local_format}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;
                        &amp;lt;div class="flex items-baseline justify-between"&amp;gt;&amp;lt;span class="font-medium"&amp;gt;Location:&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;${data.location}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;
                        &amp;lt;div class="flex items-baseline justify-between"&amp;gt;&amp;lt;span class="font-medium"&amp;gt;Line type:&amp;lt;/span&amp;gt;&amp;lt;span&amp;gt;${data.line_type}&amp;lt;/span&amp;gt;&amp;lt;/div&amp;gt;
                    &amp;lt;/div&amp;gt;`;
            }
        });
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Make sure to replace &lt;code&gt;YOUR-API-KEY&lt;/code&gt; with your actual key!&lt;/p&gt;

&lt;p&gt;And that’s it! Now we have successfully built a phone number validator in JavaScript!&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Spam and fraud will be a thing of the past. A phone number validator lets you collect high-quality contact data and block fake accounts. With these five easy steps and the code provided, you can build your own validator. &lt;br&gt;
I hope this helps! Happy number validating :)!&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>api</category>
      <category>datavalidation</category>
      <category>javascript</category>
    </item>
    <item>
      <title>5 IP Targeting Tips To Boost Your Marketing Strategy</title>
      <dc:creator>Elli</dc:creator>
      <pubDate>Tue, 17 May 2022 08:50:13 +0000</pubDate>
      <link>https://forem.com/elli/5-ip-targeting-tips-to-boost-your-marketing-strategy-40he</link>
      <guid>https://forem.com/elli/5-ip-targeting-tips-to-boost-your-marketing-strategy-40he</guid>
      <description>&lt;p&gt;Marketing that fits the consumer's needs has been around for quite a while now. We all had experiences researching a product and then getting it suggested hours later on our social media or somewhere else. &lt;/p&gt;

&lt;p&gt;This obviously is a great way to connect people with the products they really want. Studies show that &lt;a href="https://www.epsilon.com/us/about-us/pressroom/new-epsilon-research-indicates-80-of-consumers-are-more-likely-to-make-a-purchase-when-brands-offer-personalized-experiences"&gt;80% of consumers&lt;/a&gt; are more likely to make a purchase when brands offer a personalized experience. &lt;/p&gt;

&lt;p&gt;But how can companies build a marketing strategy that reaches the right target group without wasting money on ads for the wrong people?&lt;/p&gt;

&lt;p&gt;Here are five tips on boosting your marketing strategy by using IP targeting. &lt;/p&gt;

&lt;h2&gt;
  
  
  What Is IP Targeting?
&lt;/h2&gt;

&lt;p&gt;First of all, what even is an IP? IP stands for Internet Protocol. An IP is a unique numerical code that each internet-enabled device, like phones, computers, and tablets, has. &lt;br&gt;
Therefore, IP targeting is a strategy that targets your users through their IP addresses and delivers your ads to their specific networks and devices.&lt;/p&gt;

&lt;p&gt;IP Targeting is widely used for and can help you with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Learning more about your customers&lt;/li&gt;
&lt;li&gt;Offering a customized user experience&lt;/li&gt;
&lt;li&gt;Accurate demographic user targeting&lt;/li&gt;
&lt;li&gt;Gaining insights on metrics like traffic, sales, etc.&lt;/li&gt;
&lt;li&gt;Generating awareness &lt;/li&gt;
&lt;li&gt;Saving resources&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The most straightforward way to track IPs is by using an &lt;a href="https://ipbase.com/"&gt;IP API&lt;/a&gt;. These tools offer you information on your customers' location regarding countries and cities and other relevant information like time zones, latitudes, and longitudes. &lt;/p&gt;

&lt;h2&gt;
  
  
  How Does IP Targeting Work?
&lt;/h2&gt;

&lt;p&gt;There are two forms of IP targeting; either by geolocation or by network. Suppose you base your targeting strategy on geolocation or geotargeting. In that case, you can work with data about their country of residence, state, city, and neighborhood via their WiFi or GPS data. &lt;br&gt;
If you base your IP targeting on the network, you will also get information about the internet provider, the company, and the domain name.&lt;/p&gt;

&lt;h2&gt;
  
  
  5 Tips on creating an IP targeting strategy
&lt;/h2&gt;

&lt;p&gt;If you are looking to improve your lead generation or user experience, these five tips will help you along the way. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Research IP APIs&lt;/strong&gt;&lt;br&gt;
IP APIs are like fish in the sea, but not all of them are Nemo. In order to find your Nemo, it is vital to research them properly. While some solutions offer a wide range of functionality, others keep it simple and down to the essential features. The suitable IP API for you will depend on your needs and budget. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Select the right demographic&lt;/strong&gt;&lt;br&gt;
IP targeting will only work if your target is set correctly. Otherwise, you won't get the hoped-for results.&lt;/p&gt;

&lt;p&gt;Start by creating a simple &lt;a href="https://userwell.com/buyer-persona/"&gt;buyer persona&lt;/a&gt; that includes gender, age, and interests. Collect as much valuable data as possible on your demographic to narrow down your IP targeting list.  &lt;/p&gt;

&lt;p&gt;From here on, instead of broadcasting your marketing campaign all over the place, narrow it down to specific geographical locations. Think about the type of customers you want and cross-reference your insights with your website's return analytics. In the areas your customers live in or frequent students, for example, will log into the university's WiFi. This would be a great place to offer a student discount. The type of device your demographic uses can also contribute to a successful campaign.  &lt;/p&gt;

&lt;p&gt;The more you know about your customers' needs and preferences, the more personalized your campaign will be. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Stand out&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once you have your target group ready, you have to ensure that your campaign stands out. Targeting alone won't get you far if a generic design doesn't engage your customers. &lt;/p&gt;

&lt;p&gt;Luckily IP tracking can also help you out with this. After all, it allows you to personalize your content. Knowing your users' location, for example, allows you to provide content in their native language or show your prices in their currency. Whatever approach you decide on, make sure you connect with your customers.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Testing, Testing, Testing&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you followed tips one and two but still struggle with seeing results, the problem might lie elsewhere. &lt;/p&gt;

&lt;p&gt;People are more and more inclined to use VPNs or ad blockers. VPNs allow users to show a location different from their actual one. While they provide security for individuals, VPNs can be a pain for companies as they can support malicious traffic. There are, however, tools that help you move around this problem. &lt;/p&gt;

&lt;p&gt;However, maybe the issue is something different. The only real way to find out what works best is by testing it out. Test by making smaller changes in your demographic or criteria and compare two or more campaigns with another. While this will be more pricey initially, it will be more profitable in the long run. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Don't be too specific&lt;/strong&gt;&lt;br&gt;
While the great benefit of IP tracking is being able to specify your target audience to the (almost) smallest detail, this can also become a challenge. &lt;/p&gt;

&lt;p&gt;If you choose a target group that is too narrow, for example, only 18 to 20-year-old psychology students, you will lose out on potential customers. If you are too specific, you leave out parts of your audience, limiting your IP targeting success. &lt;/p&gt;

&lt;h2&gt;
  
  
  IP tracking: Personalized and customized
&lt;/h2&gt;

&lt;p&gt;While IP tracking sounds like a lot of work, the payoff can be huge. Improving your customer experience through personalized campaigns might set you ahead of your competition. &lt;/p&gt;

&lt;p&gt;Connect with your audience by creating a customized campaign to their needs, and remember that the design is as important as the right demographic. Test out your strategies, learn from your insights and improve your business.&lt;/p&gt;

</description>
      <category>marketing</category>
      <category>api</category>
      <category>tips</category>
      <category>ip</category>
    </item>
    <item>
      <title>Excel Tutorial: Working With Currency Data</title>
      <dc:creator>Elli</dc:creator>
      <pubDate>Wed, 13 Apr 2022 14:55:07 +0000</pubDate>
      <link>https://forem.com/elli/excel-tutorial-working-with-currency-data-3g4j</link>
      <guid>https://forem.com/elli/excel-tutorial-working-with-currency-data-3g4j</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In my last article, I wrote about the struggle of getting currency data into Google Sheets. (If you haven't seen it, check it out &lt;a href="https://dev.to/elli/tutorial-getting-real-time-currency-data-in-google-sheets-2g05"&gt;here&lt;/a&gt;). &lt;br&gt;
This article described two different ways to work with almost real-time currency data. However, out of my experience, I know that some people don't work with GSheets. This might be your company's policy; some organizations don't want their data to be online. &lt;/p&gt;

&lt;p&gt;Whichever reason someone might have to not work with Google Sheets, don't worry. I am here to show you how to get Currency Data into Excel. &lt;/p&gt;

&lt;p&gt;This article will show you &lt;strong&gt;two methods to get your data into Excel&lt;/strong&gt;. I have done quite a lot of research to find out the two most straightforward ways. &lt;/p&gt;

&lt;p&gt;🚨 &lt;em&gt;However, the second method described here will only work on Windows. The neverending feud between Windows and macOS claimed its next victim, but more on that later.&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;Let's dive in!&lt;/p&gt;

&lt;h2&gt;
  
  
  Method 1:
&lt;/h2&gt;

&lt;p&gt;If you are working with Excel 365, this method will work on both Windows and macOS. Get started by opening your spreadsheet and following the step-by-step guide:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Enter your currency pairs.
&lt;/h3&gt;

&lt;p&gt;Start by entering the currencies you want to compare. The &lt;strong&gt;format&lt;/strong&gt; here is essential. &lt;br&gt;
&lt;code&gt;"From Currency/to currency"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You will need to use the ISO &lt;strong&gt;currency codes&lt;/strong&gt;, so US Dollar is USD, Euro equal EUR, British Sterling Pound is GBP, etc. therefore, in our first cell, we will enter:&lt;br&gt;
&lt;code&gt;"USD/EUR"&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Using Excel Stocks
&lt;/h3&gt;

&lt;p&gt;Besides the conversion rate from USD to EUR, we also want to know it for GBP, CAD, and AUD. So we create a table and enter the pairs in the correct format. &lt;br&gt;
After this, we select the correctly formatted cells and click on &lt;strong&gt;Data &amp;gt; Stocks&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Matching Data
&lt;/h3&gt;

&lt;p&gt;If Excel finds a match for your currency pairs, it converts them into a data type. If everything is correct, the stock icon will appear in your cells. If Excel could not find data to match, a question mark will appear instead of the stock icon. Just try again after correcting your format. &lt;/p&gt;

&lt;h3&gt;
  
  
  4. Get data information
&lt;/h3&gt;

&lt;p&gt;By clicking the stock icon, you can now open the currency card. It shows you information about your currency pair, like its price, the last trade time, the rate high and low, and more. &lt;br&gt;
Or you can use the shortcut to show the card &lt;br&gt;
&lt;code&gt;CTRL (for Mac CMD)+Shift+F5&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Show information in columns
&lt;/h3&gt;

&lt;p&gt;If the card alone isn't enough for you, you can also show them in columns. To do so, we simply click into the cell next to the currency pair we need the conversion of and enter&lt;br&gt;
&lt;code&gt;=[reference-cell].Price&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For example:&lt;/strong&gt; My currency pair is USD/EUR. &lt;br&gt;
I, therefore, type "=" then select the cell "USD/EUR" and then choose the category "price". Excel then auto-fills the rest of the currency pair prices. &lt;br&gt;
So, the formula in my example is: &lt;br&gt;
&lt;code&gt;=A2.price&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3GNxNbVj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k16p308wo03ssj5lphwu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3GNxNbVj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k16p308wo03ssj5lphwu.png" alt="Example of the currency formula in Excel" width="880" height="289"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🥳 And that's it! &lt;/p&gt;

&lt;p&gt;This method is excellent if you need fast access to currency data. However, the information will not update automatically and can be delayed. If you need data for professional trading purposes, method two will be more helpful. &lt;/p&gt;

&lt;p&gt;If you need more information, check out &lt;a href="https://currencyapi.com/currency-data-in-excel/"&gt;this article&lt;/a&gt; and the screenshots included. It really helped me. &lt;/p&gt;

&lt;h2&gt;
  
  
  Method 2:
&lt;/h2&gt;

&lt;p&gt;As mentioned before, this method only works for Windows and not for macOS. Sadly, the feature I will show you just doesn't exist in Excel for macOS. However, if you are a Windows user, you are in luck because this method is as easy as it gets &lt;strong&gt;and&lt;/strong&gt; offers real-time data! &lt;br&gt;
Let's take a look!&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: You need a currency API key
&lt;/h3&gt;

&lt;p&gt;I know this seems like an unnecessary extra step, but believe me when I tell you it's super easy and worth the real-time data. I created a &lt;a href="https://app.currencyapi.com/register"&gt;&lt;strong&gt;free&lt;/strong&gt; account&lt;/a&gt; within a minute, copied the API key, and was ready to go.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Creating a web query
&lt;/h3&gt;

&lt;p&gt;Fire up your Excel sheet, and let's start creating a web query to fetch our rates. We go to &lt;strong&gt;Data &amp;gt; From Web&lt;/strong&gt;.&lt;br&gt;
A window will appear that asks us for an URL. We enter our API key and click OK.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Drill Down
&lt;/h3&gt;

&lt;p&gt;We now get redirected to another window. We will now drill down on the information the first fetch got us. In my example are two sets that I can drill down on; meta and data. We &lt;em&gt;right-click&lt;/em&gt; Record next to &lt;strong&gt;data&lt;/strong&gt; (since we want more information about currency data, not the meta-information) and then select &lt;strong&gt;Drill Down&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Into table
&lt;/h3&gt;

&lt;p&gt;Again, we get redirected to the currency data we were looking for. All we now need to do is get the information into our Excel. We &lt;em&gt;right-click&lt;/em&gt; on the first conversion and select &lt;strong&gt;Into table&lt;/strong&gt;. After this, we click &lt;strong&gt;Close and load&lt;/strong&gt; in the left upper corner. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zpaU7wmS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lm3u89lob3thwead8g09.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zpaU7wmS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lm3u89lob3thwead8g09.jpg" alt="Method two of getting currency data into Excel" width="880" height="475"&gt;&lt;/a&gt;&lt;br&gt;
Et voilà! All our currencies are in our spreadsheet. We go to &lt;strong&gt;Table Design &amp;gt; Refresh&lt;/strong&gt; to keep them up to date.&lt;/p&gt;

&lt;h2&gt;
  
  
  Less complicated than it might seem
&lt;/h2&gt;

&lt;p&gt;If you are still here, thank you first of all for reading this. I know it can seem a little overwhelming at times but trust me, as soon as you have tried it once, you will realize it's more straightforward than it might seem. Let me know in the comments if you have any questions or if you would like more tutorials like this. Good luck with your conversations; I hope I could help!&lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>excel</category>
      <category>currency</category>
      <category>spreadsheets</category>
    </item>
    <item>
      <title>Tutorial: Getting real-time currency data in Google Sheets</title>
      <dc:creator>Elli</dc:creator>
      <pubDate>Wed, 30 Mar 2022 13:32:34 +0000</pubDate>
      <link>https://forem.com/elli/tutorial-getting-real-time-currency-data-in-google-sheets-2g05</link>
      <guid>https://forem.com/elli/tutorial-getting-real-time-currency-data-in-google-sheets-2g05</guid>
      <description>&lt;h1&gt;
  
  
  Introduction
&lt;/h1&gt;

&lt;p&gt;We all have our preferred and, let's call them, "less preferred" tasks at work. And if I have learned one thing throughout my professional life, a lot of people share a non-existing enthusiasm for (drum-roll please) SPREADSHEETS.&lt;/p&gt;

&lt;p&gt;Who would have thought this article would go in this direction, except for maybe everyone who read the title.&lt;/p&gt;

&lt;p&gt;I am here to tell you one more practical use for the swiss army knife that is spreadsheets.&lt;/p&gt;

&lt;p&gt;In this tutorial, we focus on &lt;strong&gt;currency data&lt;/strong&gt;. Whether you need this data for trading or your business, or any other use, I am here to show you how you can easily use Google Sheets to convert currencies in (almost) real-time.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If you are working with Microsoft Excel instead of GSheets, this tutorial won't help you much, but don't worry - I am also working on an Excel article and will soon publish it.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This tutorial focuses on two methods of getting currency data into Google Sheets:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Using the &lt;strong&gt;GOOGLEFINANCE&lt;/strong&gt; function&lt;/li&gt;
&lt;li&gt;Using a &lt;strong&gt;currency API&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let's take a closer look at what that means.&lt;/p&gt;

&lt;h2&gt;
  
  
  Short Summary
&lt;/h2&gt;

&lt;p&gt;If you don't have time to read the whole article, here is a summary of the methods I will show you and why they might be right (or wrong) for you. &lt;/p&gt;

&lt;p&gt;
  Method 1: &lt;strong&gt;GOOGLEFINANCE&lt;/strong&gt;
  &lt;ul&gt;
&lt;li&gt;Fast and easy to use&lt;/li&gt;
&lt;li&gt;Great for small data sets&lt;/li&gt;
&lt;li&gt;No real-time data
&lt;/li&gt;
&lt;/ul&gt;




&lt;/p&gt;
&lt;p&gt;
  Method 2: &lt;strong&gt;CURRENCY API&lt;/strong&gt;
  &lt;ul&gt;
&lt;li&gt;Accurate, real-time data&lt;/li&gt;
&lt;li&gt;API key needed&lt;/li&gt;
&lt;li&gt;Script needed (don't worry, I got you)
&lt;/li&gt;
&lt;/ul&gt;



&lt;/p&gt;
&lt;h2&gt;
  
  
  Using GOOGLEFINANCE
&lt;/h2&gt;

&lt;p&gt;The fastest way to get your currency data is by using the GOOGLEFINANCE function. The feature allows you to get &lt;em&gt;almost&lt;/em&gt; real-time currency data provided by Google into your spreadsheet.&lt;/p&gt;

&lt;p&gt;There is a simple formula to fetch the data. It consists of the function &lt;strong&gt;"CURRENCY"&lt;/strong&gt;, a &lt;strong&gt;base currency&lt;/strong&gt; (from) and a &lt;strong&gt;target currency&lt;/strong&gt; (to). &lt;br&gt;
It requires the &lt;strong&gt;international three-letter code&lt;/strong&gt; for currencies without a space between them to work correctly. For example, we will write USD for US Dollar, EUR for Euro, etc.&lt;br&gt;
With this in mind, the formula goes as follows:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;=GOOGLEFINANCE("CURRENCY:&amp;lt;base currency&amp;gt;&amp;lt;target currency&amp;gt;")&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;or in more practical terms:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;=GOOGLEFINANCE("USDEUR")&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Let's try this formula out with an example.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We want to convert three currencies. Our &lt;em&gt;base currency is US Dollar (USD)&lt;/em&gt;. Let's assume we want to convert them into Euro, British Pound Sterling (GBP), and Canadian Dollar (CAD). Our first column will therefore include our currency pair. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Step 1: Using the formula&lt;/strong&gt; isn't rocket science. We simply select the cell we want our results in column two, type &lt;code&gt;=GOOGLEFINANCE("USDEUR")&lt;/code&gt;, and hit enter. Now, we have the current conversion rate for USD to EUR.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Step 2: Including References&lt;/strong&gt; helps us save time, as we don't need to type in the formula manually for each currency pair. To do so, we adjust the formula a little:&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;=GOOGLEFINANCE("CURRENCY:"&amp;amp;A2&amp;amp;B2)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;We now only need to drag the formula over the cells we want to convert.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Step 3: Working with prices&lt;/strong&gt; is possible by using simple multiplication.  So, the formula changes to: &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;=GOOGLEFINANCE("CURRENCY:&amp;lt;base currency&amp;gt;&amp;lt;target currency&amp;gt;")*cell&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Using an API
&lt;/h2&gt;

&lt;p&gt;While method one is straightforward, method two is adjustable and allows to work with big data sets.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Getting an API key&lt;/strong&gt; is necessary for this method to work. I used &lt;strong&gt;currencyapi.com&lt;/strong&gt; in my example. They offer a free version of their API so that you can try the tutorial with their API.&lt;br&gt;
We use the &lt;strong&gt;" latest " endpoint&lt;/strong&gt; since we want current conversions. Your API key should look something like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VE1uvE8R--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5pzwioe1r2sxki1kiw35.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VE1uvE8R--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5pzwioe1r2sxki1kiw35.png" alt="API key with the latest endpoint" width="880" height="104"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Create a table&lt;/strong&gt; with the data you want to get. I would advise to go with &lt;em&gt;three columns&lt;/em&gt;. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Column 1: Price to convert (in base currency)&lt;/li&gt;
&lt;li&gt;Column 2: Three-letter currency code (i.e. USD, EUR, GBP, etc.)&lt;/li&gt;
&lt;li&gt;Column 3: Conversion rate (will be filled in by script)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here is what your document should now look like.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UboAh-pM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/schnhdob4v8x1g7skjwo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UboAh-pM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/schnhdob4v8x1g7skjwo.png" alt="Table for currency conversions in Google Sheets" width="880" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Open Apps Script&lt;/strong&gt; by going to &lt;em&gt;Extensions &amp;gt; Apps Script&lt;/em&gt;. This will open up a new tab.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Enter the Code&lt;/strong&gt;. If you don't want to invest time in writing your own code, the people at currencyapi.com have prepared a code that you can simply copy+paste or download from their tutorial. Just &lt;a href="https://currencyapi.com/currency-data-in-google-sheets/"&gt;click here&lt;/a&gt; to see their blog post. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Click "Save" and "Run"&lt;/strong&gt; to fetch the data from currencyapi.com. &lt;/p&gt;

&lt;p&gt;Et voila! We now have the currency data we need in our Google Sheet. &lt;/p&gt;

&lt;h2&gt;
  
  
  More to come
&lt;/h2&gt;

&lt;p&gt;I hope these two easy methods help you convert currency data in GSheets. I had to go through quite a few tutorials to find the easiest ways to do so. &lt;/p&gt;

&lt;p&gt;If you want to know how &lt;strong&gt;getting currency data works in Excel&lt;/strong&gt;, stay tuned for my next post. &lt;/p&gt;

</description>
      <category>tutorial</category>
      <category>googlesheets</category>
      <category>currencydata</category>
      <category>spreadsheets</category>
    </item>
  </channel>
</rss>
